我有 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/