簡體   English   中英

為什么在將 ArrayList 轉換為 String[] 時 list.toArray() 是一個對象?

[英]Why is list.toArray() an object while converting ArrayList to String[]?

明確地說,這不是這些問題Convert ArrayList to StringConvert ArrayList contains strings的重復,但它與它們相關。 假設我們有一個從ArrayListString []的轉換方法,如我提到的第一個鏈接的答案中所述:

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[] 我想知道是否還有其他解決方法。

編輯 2

這與打印數組無關,它與將列表轉換為字符串數組有關。

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

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM