要明确说明这不是这些问题Convert ArrayList to String和Convert ArrayList containing 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);
使用print语句,我的输出将如下所示:
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()
转换,我需要通过String[]
之类的操作将其转换回stockArr.split("")
。我想知道是否还有其他工作要做。
编辑2
这与打印数组无关,它与将List转换为字符串数组有关。
答案 0 :(得分:0)
数组是对象。使用System.out.println()
打印它们将调用默认的Object#toString()
方法,该方法返回具有哈希码值的对象类名称。要打印数组的字符串表示形式,请使用Arrays.toString(Object[])
:
返回指定数组内容的字符串表示形式。如果数组包含其他数组作为元素,则它们将从继承自Object的
Object.toString()
方法转换为字符串,该方法描述其身份而不是其内容。
答案 1 :(得分:0)
有一个有用的库函数Arrays.toString(arr)
String[] arr = { "a", "b" };
System.out.println(Arrays.toString(arr));
//Output: [a, b]