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



我在做这个:

(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的数组。

最新更新