如何创建包含set a或set b或两者所有元素的新集合?
如何创建包含两个Set所有元素的新Set(并集)
你的代码里存在两个关键问题:
- 用
setForAB.add(String.valueOf(a))和setForAB.add(String.valueOf(b))是错误的,这两行会把整个集合的字符串表示(比如["a","b"])作为单个元素塞进新集合,而不是把集合里的元素逐个添加,最终会导致新集合多出两个冗余的“集合字符串”元素。 - 虽然后面的
addAll(a)和addAll(b)是正确的添加元素方式,但前面的错误操作会破坏结果的准确性。
正确的实现方式
方法一:标准基础写法
直接初始化空Set,通过addAll分别添加两个集合的所有元素,Set会自动处理重复元素:
public static Set<String> vereinigung(Set<String> a, Set<String> b) { Set<String> setForAB = new HashSet<>(); setForAB.addAll(a); setForAB.addAll(b); return setForAB; }
方法二:Java 8+ Stream API简洁写法
用Stream合并两个集合的元素,再收集为Set:
import java.util.stream.Collectors; import java.util.stream.Stream; public static Set<String> vereinigung(Set<String> a, Set<String> b) { return Stream.concat(a.stream(), b.stream()) .collect(Collectors.toSet()); }
这两种写法都能得到包含set a、set b所有元素的新Set,自动去除重复元素,完全符合你要的“包含任一元素或全部元素”的需求。
内容的提问来源于stack exchange,提问作者haruka kudo
相关产品推荐
相关产品推荐

