You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从已有不可变集合创建含新增元素的新不可变集合?

解决不可变集合合并新增元素的问题

你之前用Set.of(s, "d")得到嵌套集合,是因为这个方法把原集合对象和字符串"d"当作两个独立元素存入了新集合,而非合并元素。下面提供两种无需Guava的解决方案:

方法一:借助可变集合过渡

先将不可变集合转为可变集合(比如HashSet),添加新元素后再转回不可变集合:

Set<String> s = Set.of("a", "b", "c");
// 创建可变集合并导入原集合元素
Set<String> mutableSet = new HashSet<>(s);
mutableSet.add("d");
// 转换为新的不可变集合
Set<String> newImmutableSet = Set.copyOf(mutableSet);

Set.copyOf()会返回包含可变集合所有元素的不可变集合,同时自动忽略重复元素。

方法二:使用Stream流合并(Java 10+)

通过Stream将原集合元素和新元素合并,直接收集为不可变集合:

Set<String> s = Set.of("a", "b", "c");
Set<String> newImmutableSet = Stream.concat(s.stream(), Stream.of("d"))
                                   .collect(Collectors.toUnmodifiableSet());

Collectors.toUnmodifiableSet()返回符合Set规范的不可变集合,无需借助中间可变集合,代码更简洁。

两种方法都不会修改原不可变集合s,而是生成一个全新的不可变集合。

内容的提问来源于stack exchange,提问作者akonsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:15:32