如何单选java中的列表列表

how to single the list of list in java

我这里有一段代码可以获取 java 中的列表列表。但我现在的问题是我的服务器中的结果是可重复的...

例子

[2012-01-04, 3 , 2012-02-04, 4, 2012-05-04, 3][2012-01-04, 3 , 2012-02-04, 4, 2012-05-04, 3][2012-01-04, 3 , 2012-02-04, 4, 2012-05-04, 3]

我的数组中value的值个数与出现的3组数组相同
这是我的代码。请帮助我。

SortedSet<String> uniqueSet = new TreeSet<String>(arrlist);
  ArrayList<ArrayList<String>> listOLists = new ArrayList<ArrayList<String>>();
  // List<String> flat = list.stream().flatMap(List::stream).collect(Collectors.toList());
  ArrayList<String> singleList = new ArrayList<String>();
  for(String date : uniqueSet) { 
    int counts = Collections.frequency(arrlist, date);
     Logger.debug("date: "+ date + " counts: " +counts);
      singleList.add(date);
      singleList.add(Integer.toString(counts));
      listOLists.add(singleList);

    }
    Logger.debug("Sample List: " + listOLists);
    return listOLists;
}

您正在修改和添加同一个列表。可能您想在循环内声明它。

SortedSet<String> uniqueSet = new TreeSet<String>(arrlist);
  ArrayList<ArrayList<String>> listOLists = new ArrayList<ArrayList<String>>();
  // List<String> flat = list.stream().flatMap(List::stream).collect(Collectors.toList());
  for(String date : uniqueSet) { 
    int counts = Collections.frequency(arrlist, date);
     Logger.debug("date: "+ date + " counts: " +counts);
      ArrayList<String> singleList = new ArrayList<String>();
      singleList.add(date);
      singleList.add(Integer.toString(counts));
      listOLists.add(singleList);

    }
    Logger.debug("Sample List: " + listOLists);
    return listOLists;
}

你的错误是你在循环之前只创建了一次内部列表。然后,您通过将 相同的 列表实例一次又一次地插入外部列表来更改每个循环 运行 中的单个列表实例。

更改单个列表实例将更改它在外部列表中的所有实例。

所以只需移动线

ArrayList<String> singleList = new ArrayList<String>();

在循环内。然后这将在每个循环 运行.

中创建一个新的内部列表