0

我在这里有一个代码,可以在 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]

我的数组中的值的值数是出现的相同的 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;
}
4

2 回答 2

0

您正在修改和添加相同的列表。可能您想在循环中声明它。

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;
}
于 2016-03-23T08:45:39.180 回答
0

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

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

所以只需移动这条线

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

循环内。然后,这将在每次循环运行时创建一个新的内部列表。

于 2016-03-23T08:46:30.043 回答