【发布时间】:2012-02-12 06:10:30
【问题描述】:
我正在这样做:
(String[]) myTreeSet.toArray();
但这在运行时给了我一个 ClassCastException。
我唯一能想到的就是先创建一个数组,然后遍历 myTreeSet 中的每个元素并将其添加到数组中。似乎必须有比这更好的方法。有没有或者我应该这样做?
谢谢。
【问题讨论】:
标签: java arrays string treeset
我正在这样做:
(String[]) myTreeSet.toArray();
但这在运行时给了我一个 ClassCastException。
我唯一能想到的就是先创建一个数组,然后遍历 myTreeSet 中的每个元素并将其添加到数组中。似乎必须有比这更好的方法。有没有或者我应该这样做?
谢谢。
【问题讨论】:
标签: java arrays string treeset
String[] result = myTreeSet.toArray(new String[myTreeSet.size()]);
【讨论】:
当使用toArray() 时,会发生以下情况:正在使用new Object[size] 分配一个新的对象数组,并且数组中的每个元素都将是对您的字符串元素之一的引用。即使实际上指向字符串,它也是一个类型为Object 的数组。
当使用toArray(T[] a) 时,会发生以下情况:正在使用分配一个新的 T 数组
java.lang.reflect.Array
.newInstance(a.getClass().getComponentType(), size)
并且数组中的每个都是对您的字符串之一的引用,因为a.getClass().getComponentType 在您的情况下将返回String.class。这一次,它是一个 String 类型的数组。
【讨论】: