我已经声明了一个通用字符串数组
的ArrayListArrayList<String[]> dataListCol = new ArrayList<String[]>();
我正在以这种方式填充arraylist
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
String[] strArrayCol = new String[2];
strArrayCol[0] = json_data.getString("col1");
strArrayCol[1] = json_data.getString("col2");
dataListCol.add(strArrayCol);
}
我正在尝试打印数组中的所有单个项目,如图所示
System.out.println("new array " + Arrays.toString(dataListCol.toArray()));
输出不是有意义的字符串表示。请问如何打印数组中的所有项目
答案 0 :(得分:2)
由于每个元素本身都是array
,您需要在每个元素上调用Arrays.toString
来打印值,例如:
List<String[]> list = new ArrayList<String[]>();
list.stream()
.map(Arrays::toString)
.forEach(System.out::println);
或者,要仅打印一个元素,只需在循环内使用以下内容:
System.out.println(Arrays.toString(strArrayCol));
<强>更新强>
如果您想将String
分配给引用而不是打印它,那么您可以使用Collector
,例如:
String string = list.stream()
.map(Arrays::toString)
.collect(Collectors.joining("|"));
这将为所有元素提供管道分隔的字符串。
答案 1 :(得分:0)
两种方法,循环或foreach方法。
for (String object: list) {
System.out.println(object);
}
或
ArrayList l=new ArrayList();
l.add(value);
l.forEach((a)->System.out.println(a));
希望能帮到你
答案 2 :(得分:0)
事实是,您在数组上调用方法tostring()
,该方法使用通用对象的方法向您显示该特定对象的哈希值。
你可以简单地做这样的事情
int size = t.length;
for (int i=0; i<size; i++) { System.out.println(t[i]);
}
或者以更简单的方式使用
Arrays.toString()
和
System.out.println(Arrays.toString(yourArray));
答案 3 :(得分:0)
您已经列出了 holds type String[]
,当您要求列表返回给您时,它是由数组表示的状态,调用toArray()
,它返回包含列表中每个元素的数组。
因此,您收到的数组是Object[]
,其中包含列表中的所有元素。记住您声明列表要保留的元素类型 -
String[]
Arrays.toString(Object[] array)
时, toString()
遍历数组。您给出的数组中每个元素的运行时类型为String[]
,因此在每个迭代toString()
上都会调用数组。
您想在列表所持有的每个 String 数组中的每个 String 元素上调用toString()
:
for(String[] strArray : dataListCol) {
System.out.println(Arrays.toString(strArray));
}
或者如果你是意大利面条输出的粉丝:
System.out.println(Arrays.deepToString(dataListCol.toArray()));
注意 Arrays.deepToString(dataListCol.toArray()))
做你想做的事。这是因为当仅关注元素的存储方式时,基本上List<Object[]>
相当于2D数组Object[][]
,就像List<Object>
相当于单个维数组{{1} }}。
除了数组的元素连续存储在内存中,而Collection类不会连续存储它们的元素(只是为了让内存英雄不在我的背上)