繁体   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