2012-02-12 92 views
3

我這樣做:Java - 將TreeSet <String>轉換爲String []的最有效方法?

(String[]) myTreeSet.toArray(); 

但是,讓我在運行一個ClassCastException。

我能想到的唯一的事情就是先製作一個數組,然後迭代myTreeSet中的每個元素並將其添加到數組中。似乎必須有比這更好的方法。有,還是我應該這樣做?

謝謝。

+3

http://forums.devshed.com/java-help-9/treeset-to-an-array-401225.html – 2012-02-12 06:13:44

+0

@ todda.speot.is:謝謝! – Tim 2012-02-12 06:23:05

回答

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

這樣做。謝謝! – Tim 2012-02-12 06:23:32

+0

出於好奇,有人可以解釋爲什麼我的方式拋出異常,爲什麼這種方式不? – Tim 2012-02-12 06:30:09

+2

http://stackoverflow.com/questions/5690351/java-stringlist-toarray-gives-classcastexception – 2012-02-12 06:56:42

3

當使用toArray()會發生以下情況:一個新的對象陣列被通過使用new Object[size]和從陣列的每個元素將是您的字符串元件中的一個的基準分配。即使實際指向字符串,它也是類型爲Object的數組。

當使用toArray(T[] a)會發生以下情況:一個新型T陣列正被使用

java.lang.reflect.Array 
       .newInstance(a.getClass().getComponentType(), size) 

,並且每個從陣列將是您的字符串中的一個參考,因爲a.getClass().getComponentType將你的情況返回String.class分配。這一次,它是一個String類型的數組。

+0

太好了,非常感謝。 – Tim 2012-02-12 15:54:47

相關問題