【发布时间】:2019-05-04 05:06:08
【问题描述】:
我有一个包含重复 ArrayList 的列表。
我正在寻找删除它们的解决方案。
这是一个例子:
listOne = [[1, 0], [0, 1], [3, 2], [2, 3]]
此集合包含重复的列表。通常我想得到:
theListAfterTransformation = [[1, 0],[3, 2]]
这是我的小例子,我尝试使用 Set 但效果不佳。
public class Example {
public static void main( String[] args ) {
ArrayList<ArrayList<Integer>> lists = new ArrayList<>();
ArrayList<Integer> list1 = new ArrayList<>(); list1.add(1); list1.add(0);
ArrayList<Integer> list2 = new ArrayList<>(); list2.add(0); list2.add(1);
ArrayList<Integer> list3 = new ArrayList<>(); list3.add(3); list3.add(2);
ArrayList<Integer> list4 = new ArrayList<>(); list4.add(2); list4.add(3);
lists.add(list1);lists.add(list2);lists.add(list3);lists.add(list4);
System.out.println(getUnduplicateList(lists));
}
public static ArrayList<ArrayList<Integer>> getUnduplicateList( ArrayList<ArrayList<Integer>> lists) {
Iterator iterator = lists.iterator();
Set<ArrayList<Integer>> set = new HashSet<>();
while (iterator.hasNext()){
ArrayList<Integer> list = (ArrayList<Integer>) iterator.next();
set.add(list);
}
return new ArrayList<>(set);
}
}
请注意,这是我项目中的一个小例子,在这个实现中使用改变很多事情的解决方案将非常困难。
所以要考虑到 getUnduplicateList 应该保持相同的签名。好主意是只更改实现。
此程序打印与输入相同的列表。请有任何想法。
【问题讨论】:
标签: java arraylist collections set