2012-02-27 55 views
1

的陣列考慮其簽名包含Integer陣列的方法:爪哇:複製的整數數組成字符串

public static void parse(Integer[] categories) 

parse需要調用一個不同的方法,該方法要求將字符串的數組。所以我需要將Integer[]轉換爲String[]。例如,[31, 244] ⇒ ["31", "244"]

我已經試過Arrays.copyOf描述here

String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class); 

,但得到的ArrayStoreException

我可以迭代和轉換每個元素,但有沒有更優雅的方式?

+2

for循環的任何問題? – 2012-02-27 12:00:46

+0

這不是問題,但我認爲會有更優雅的東西,也許讓人想起Python的列表理解。 – 2012-02-27 12:02:12

+0

無論哪種方式的底線是,java必須分別轉換每個元素,所以任何你可以找到的方式可能只是看起來更好,但執行循環 – Hachi 2012-02-27 12:07:08

回答

3

如果你不試圖避免循環,那麼你可以簡單地做:

String[] strarr = new String[categories.length]; 
for (int i=0; i<categories.length; i++) 
    strarr[i] = categories[i] != null ? categories[i].toString() : null; 

編輯:我承認這是一個破解但它的作品不反覆用原來的整數數組:

String[] strarr = Arrays.toString(categories).replaceAll("[\\[\\]]", "").split("\\s*,\\s*"); 
+0

+ 1爲避免NullPointerException – 2012-02-27 12:05:40

+1

-1問題是:我可以迭代並轉換每個元素,但有沒有更優雅的方式?「 – 2012-02-27 12:10:40

+0

我給了它+1,沒有接受它。如果沒有任何一行,這可能是正確的答案。 – 2012-02-27 12:13:57

1

您可以手動通過循環詮釋陣,每個元素保存到字符串數組與.toString()附做到這一點:

for(i = 0; i < intArray.length(); i++) { 
    stringArray[i] = intArray[i].toString() 
} 

(未經測試,但這樣的事情應該是你的事尋找)

嗯,剛剛閱讀您的評論。我不知道有什麼更容易或更優雅的方式來做到這一點,對不起。

1

我不認爲那裏有它的方法:

使用循環爲它喜歡:

String strings[] = new String[integerarray.length]; 

for(int i = 0; i<integerarray.length;++i) 
{ 
    strings[i] = Integer.toString(integerarray[i]); 
}