java - 使用集合删除重复列表

标签 java arraylist collections

我有 3 个列表,其中两个是重复的。我想将这些列表存储到一个单元中,删除所有重复项,所以我想将每个列表添加到一个集合中。这是我尝试过的:

List<Integer> coins1 = Arrays.asList(5, 5, 10);
List<Integer> coins2 = Arrays.asList(5, 10, 5);
List<Integer> coins3 = Arrays.asList(10, 10);

coins1.sort((a, b) -> a.compareTo(b));
coins2.sort((a, b) -> a.compareTo(b));
coins3.sort((a, b) -> a.compareTo(b));

Collection<List<Integer>> allCoinPossibilities = new TreeSet();

allCoinPossibilities.add(coins1);
allCoinPossibilities.add(coins2);
allCoinPossibilities.add(coins3);

我收到错误“java.util.Arrays$ArrayList 无法转换为 java.lang.Comparable”。该错误是有道理的,集合不知道如何比较每个列表以禁止重复。我需要覆盖比较方法吗?如果是这样,我该怎么做?这是解决此问题的正确方法吗?

谢谢!

最佳答案

创建一个 HashSet 并将所有内容添加到其中。

最后你将只剩下独特的元素

List<Integer> coins1 = Arrays.asList(5, 5, 10);
List<Integer> coins2 = Arrays.asList(5, 10, 5);
List<Integer> coins3 = Arrays.asList(10, 10);

Set<Integer> dedupedCollection = new HashSet<Integer>();

dedupedCollection.add(coins1);
dedupedCollection.add(coins2);
dedupedCollection.add(coins3);

return dedupedCollection;

然后您可以返回 dedupedCollection; 作为没有重复项的最终集合。

关于java - 使用集合删除重复列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330457/

相关文章:

java - 如何在声明java中初始化一个点数组

java - 不同大小列表的交集

java - 在集合泛型中使用 '? extends ' 和 '? super '

java - 在java中反序列化具有抽象类的Json对象

java - 要数组的多个对象

java - ArrayList<Integer>,尝试查找输入值的平均值

java - 当日期为字符串时,如何按日期对对象列表进行排序?

java - hibernate 中的 SaveOrUpdate 意外地工作

java - 长时间运行的进程,在 UI 中显示进度

java - 为什么用 == 比较两个 long 会返回 false,而当我转换为 int 或 String 时它会返回 true?