如何单选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>();
在循环内。然后这将在每个循环 运行.
中创建一个新的内部列表
我这里有一段代码可以获取 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>();
在循环内。然后这将在每个循环 运行.
中创建一个新的内部列表