使用 set 从 arraylist 中删除重复项
Removing duplicates from arraylist using set
有 2 组重复 set1 ={1,2,3,4,5}
set2 = {1,3,6,7}
结果应该是 set3 ={2,4,5,6,7}
请让我重申一下,我想使用Set接口并且结果集应该是自然排序的。
你可以试试这个 -
Set set1, set2;
Set newSet = new HashSet(set1);
newSet.addAll(set2);
- 找到交集
- 找到工会
- 并集减去交集
代码:
public static void main(String[] args) {
Set<Integer> set1 = new HashSet<Integer>(Arrays.asList(1, 2, 3, 4, 5));
Set<Integer> set2 = new HashSet<Integer>(Arrays.asList(1, 3, 6, 7));
Set<Integer> intersection = new HashSet<Integer>(set1);
intersection.retainAll(set2);
// set1 is now the union of set1 and set2
set1.addAll(set2);
// set1 is now (union - intersection)
// All elements in set1 or set2, but not in both set1 & set2
set1.removeAll(intersection);
for(Integer n : set1) {
System.out.println(n);
}
}
输出:
2
4
5
6
7
有 2 组重复 set1 ={1,2,3,4,5}
set2 = {1,3,6,7}
结果应该是 set3 ={2,4,5,6,7}
请让我重申一下,我想使用Set接口并且结果集应该是自然排序的。
你可以试试这个 -
Set set1, set2;
Set newSet = new HashSet(set1);
newSet.addAll(set2);
- 找到交集
- 找到工会
- 并集减去交集
代码:
public static void main(String[] args) {
Set<Integer> set1 = new HashSet<Integer>(Arrays.asList(1, 2, 3, 4, 5));
Set<Integer> set2 = new HashSet<Integer>(Arrays.asList(1, 3, 6, 7));
Set<Integer> intersection = new HashSet<Integer>(set1);
intersection.retainAll(set2);
// set1 is now the union of set1 and set2
set1.addAll(set2);
// set1 is now (union - intersection)
// All elements in set1 or set2, but not in both set1 & set2
set1.removeAll(intersection);
for(Integer n : set1) {
System.out.println(n);
}
}
输出:
2
4
5
6
7