Java - 将TreeSet <string>转换为String []?</string>的最有效方法

时间:2012-02-12 06:10:30

标签: java arrays string treeset

我这样做:

(String[]) myTreeSet.toArray();

但是这在运行时给了我一个ClassCastException。

我唯一能想到的就是先制作一个数组然后遍历myTreeSet中的每个元素并将其添加到数组中。似乎必须有比这更好的方法。我应该或者应该这样做吗?

感谢。

2 个答案:

答案 0 :(得分:19)

String[] result = myTreeSet.toArray(new String[myTreeSet.size()]);

答案 1 :(得分:3)

使用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类型的数组。