[英]ArrayList fail to convert to a String array using (String[])list.toArray(). Why?
[英]Why is list.toArray() an object while converting ArrayList to String[]?
明确地说,这不是这些问题Convert ArrayList to String和Convert ArrayList contains strings的重复,但它与它们相关。 假设我们有一个从ArrayList
到String []
的转换方法,如我提到的第一个链接的答案中所述:
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.