hashset求并集最直接方式是addall(),会修改原集合;如需不修改,则先复制再addall;也可用stream.concat()实现不可变并集,但性能略低。

Java 中 HashSet 求两个集合的并集,最直接的方式是用 addAll() 方法 —— 它会把另一个集合的所有元素添加到当前集合中,自动去重,结果就是并集。
用 addAll() 获取并集(推荐)
这是最常用、最简洁的做法。注意:该操作会**修改原集合**,如果不想改变原始数据,需先复制一份。
- 创建一个新 HashSet,然后调用
addAll(set1)和addAll(set2) - 或者以 set1 为基准,调用
set1.addAll(set2),此时 set1 就变为并集
HashSet<string> set1 = new HashSet(Arrays.asList("a", "b", "c"));
HashSet<string> set2 = new HashSet(Arrays.asList("b", "c", "d"));
// 方式一:不修改原集合
HashSet<string> union = new HashSet(set1); // 先复制
union.addAll(set2); // 再合并
// 方式二:修改 set1(慎用)
set1.addAll(set2); // set1 现在是 {"a","b","c","d"}
</string></string></string>
用 Stream API(Java 8+,函数式风格)
适合链式处理或需要保持不可变语义的场景。不会修改原集合,但性能略低于 addAll()。
- 把两个集合合并成一个流,再收集为新的 HashSet
- 利用
Stream.concat()连接两个流
Set<string> union = Stream.concat(set1.stream(), set2.stream())
.collect(Collectors.toCollection(HashSet::new));
</string>
注意事项
- HashSet 的底层是 HashMap,
add()和addAll()天然保证元素唯一性,无需额外去重 - 元素必须正确重写
hashCode()和equals(),否则并集结果可能出错 - 如果集合很大,
addAll()时间复杂度接近 O(n),比 Stream 更高效
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











