java – 无法显示ArrayList

我正在使用arrayList的arrayList进行繁重的操作.当我试图显示父数组列表时,我有一个问题,它显示空的arraylists如下所示

我的arrayList声明在下面

List<List<String>> arrayList = new ArrayList<List<String>>();

这是我的孩子名单

List<String> stringLine = new ArrayList<String>();

在我的程序中,我将这个stringLine添加到arrayList中

arrayList.add(stringLine);

尝试打印父arrayList时的输出
到目前为止,arrayList的打印大小44个内容是:[[],[],[],[],[],[],[],[],[],[],[],[],[], [],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[] ,[],[],[],[],[],[],[],[],[],[],[],[],[],[]]

注意:在上面的输出中,44是它具有的arrayList元素的no

当我尝试打印孩子时,它表现良好

StringLine is : [1640, 1138, 878, 1600, 1978, 280, 24, 2509, 702, 553, 2362, 2019, 1558, 2494, 823, 35, 1181, 1915, 1261, 1448, 493, 798, 1160, 651, 2249, 1639, 2428, 458, 2556, 939, 2114, 2339, 2373, 286, 2078, 844, 2673, 1486, 1657, 1531, 1043, 734, 2247, 2121, 75, 2599, 975, 29, 175, 960, 2151, 480, 868, 2627, 1941, 671, 2529, 1952, 1623, 2160, 2298]

哪里,我错了?

更新:

这是我的代码片段,我在其中向父arrayList添加一个列表

private void splitString(String temp) {
    System.out.println("In splitString method..");
    List<String> stringLine = new ArrayList<String>();
    StringTokenizer stringTokenizer = new StringTokenizer(temp, " ");
    while (stringTokenizer.hasMoreTokens()) {
        stringLine.add(stringTokenizer.nextToken());
    }
    if (stringLine.size() != 3) {
        arrayList.add(stringLine);
    }
    stringLine.clear();
}
最佳答案
更新

发布代码后,错误很明显.正如您在此处所见,List#clear将删除列表中的所有元素.由于您有意删除它们,因此输出为空并不奇怪.

删除这一行:stringLine.clear();一切都应该没问题.您正在传递List< String>通过引用与arrayList.add,这意味着它仍将指向您正在清除的相同stringLine.如果你真的需要清除,你需要深度克隆.

你需要正确地嵌入for循环,一切都会正常工作:

List<List<String>> arrayList = new ArrayList<List<String>>();
List<String> stringLine = new ArrayList<String>();
stringLine.add("5");
stringLine.add("7");
arrayList.add(stringLine);
for (List<String> list : arrayList) {// each list in the arrayList
    for (String current : list) {// each element in each list
        System.out.println(current);
    }
}

或者,如果您想一次打印整个列表:

for (List<String> list : arrayList) {// each list in the arrayList
    System.out.println(list); // will work as expected.
}

转载注明原文:java – 无法显示ArrayList - 代码日志