2015-10-05 82 views
-2

要清楚地說明這不是這些問題的重複Convert ArrayList to StringConvert ArrayList containing strings,但它與它們有關。 假設我們有從ArrayListString []轉換一種方法,在第一環節的答案描述我已經提到:爲什麼在將ArrayList轉換爲String []時list.toArray()是一個對象?

List<String> stockList = new ArrayList<String>(); 
stockList.add("stock1"); 
stockList.add("stock2"); 

String[] stockArr = new String[stockList.size()]; 
stockArr = stockList.toArray(stockArr); 

for(String s : stockArr) 
    System.out.println(s); 

隨着打印語句我的輸出應該是這樣的:

stock1 
stock2 

但是如果我希望我的輸出採用數組格式(如[stock1,stock2]),並且我排除了轉換爲String(即for循環結束)的情況。

如果我只打印出String[]它會給我一個垃圾值,如[Ljava.lang.String;@5636bc0a。我猜這可能是因爲jvm的問題返回toArray作爲對象。

爲什麼這樣,這是什麼工作?

我需要一個String [],這給了我一個有意義的價值。我需要它在這個格式,因爲我使用這種轉換來調用我的項目JAX-WS功能,只接受String[]值:

myJaxWSObj.setValue(String[] myArrayOfStrings); 

編輯

感謝您的答案,但有些你一定誤解了這個問題。我想將ArrayList轉換爲String []而不是String。所以做任何形式的.toString()都不會有多大幫助,因爲正如我上面提到的,我需要調用僅接受String[]值的JAX-WS類。所以問題不在於System.out.println()

假設我做了一個.toString()轉換我需要通過做一些像stockArr.split("")這樣的轉換回String[]。我想知道是否還有其他解決方法。

EDIT 2

這有什麼好做印刷陣列,它與列表轉換爲字符串數組做。

+0

所以,你想要的是一個方法來打印出有意義的信息,如果該值是一個'的String []'?就像,如果你在做'System.out.println(stockArr)',你想讓數組的內容顯示出來? – Makoto

+0

是的,而不是像'[Ljava.lang.String; @ 5636bc0a'等值。 – agenthost

+0

當你使用'System.out.println'時,這隻適用於*嗎? – Makoto

回答

0

數組是對象。使用System.out.println()打印它們將調用默認的Object#toString()方法,該方法返回帶有散列碼值的對象類名稱。要打印數組的字符串表示形式,請使用Arrays.toString(Object[])

返回指定數組內容的字符串表示形式。如果數組包含其他數組作爲元素,則它們將由Object繼承的Object.toString()方法轉換爲字符串,該方法描述其身份而不是其內容。

+0

感謝您的回覆,但這不是我正在尋找的內容,希望現在編輯更清楚。 – agenthost

+0

@agenthost數組不是字符串。這是兩種不同的類型。您不必將數組轉換爲字符串以將其傳遞給函數。只要確保要打印值的人通過使用'Arrays.toString(array)'來做到這一點。 – manouti

+0

它與打印數值無關! – agenthost

0

有一個有用的庫函數Arrays.toString(arr)

String[] arr = { "a", "b" }; 
System.out.println(Arrays.toString(arr)); 
//Output: [a, b] 
+0

這實際上並沒有解決問題。 – Makoto

+0

自發布此答案以來,問題發生了一些變化 –

相關問題