我在做这个:
(String[]) myTreeSet.toArray();
但这在运行时给了我一个ClassCastException。
我唯一能想到的就是先制作一个数组,然后遍历myTreeSet中的每个元素并将其添加到数组中。看来肯定有比这更好的方法。有没有或者我应该这么做?
谢谢。
String[] result = myTreeSet.toArray(new String[myTreeSet.size()]);
使用toArray()
时,会发生以下情况:使用new Object[size]
分配一个新的Object数组,数组中的每个元素都将是对其中一个字符串元素的引用。即使实际指向字符串,它也是一个类型为Object
的数组。
当使用toArray(T[] a)
时,会发生以下情况:使用分配新的T阵列
java.lang.reflect.Array
.newInstance(a.getClass().getComponentType(), size)
并且数组中的每个都将是对其中一个字符串的引用,因为在您的情况下a.getClass().getComponentType
将返回String.class
。这一次,它是一个类型为String的数组。