将所有项目打印到控制台中的ArrayList <string []>

时间:2017-05-18 15:32:09

标签: java arrays arraylist

我已经声明了一个通用字符串数组

的ArrayList
ArrayList<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()));

输出不是有意义的字符串表示。请问如何打印数组中的所有项目

4 个答案:

答案 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类不会连续存储它们的元素(只是为了让内存英雄不在我的背上)