
在Java中,不可变集合一旦创建就不能被修改。如果你需要基于现有的不可变集合创建一个新的、包含更多元素的集合,直接添加元素是不允许的。 幸运的是,Java 8引入的Stream API 提供了一种优雅的解决方案。
让我们考虑以下场景:你有一个不可变集合 Set<String> s = Set.of("a", "b", "c"),你希望创建一个新的不可变集合 t,它包含 s 中的所有元素,以及额外的一个元素 "d"。
以下是如何使用Stream API实现此目的:
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.function.Function;
public class ImmutableSetExample {
public static void main(String[] args) {
Set<String> s = Set.of("a", "b", "c");
// 方法一:使用 Set.of() 创建一个包含单个元素的 Set,然后合并
Set<String> t1 = Stream.of(s, Set.of("d"))
.flatMap(Set::stream)
.collect(Collectors.toUnmodifiableSet());
System.out.println("方法一: " + t1); // 输出: [d, c, b, a] (顺序可能不同)
// 方法二:直接将 Stream<String> 合并
Set<String> t2 = Stream.of(s.stream(), Stream.of("d"))
.flatMap(Function.identity())
.collect(Collectors.toUnmodifiableSet());
System.out.println("方法二: " + t2); // 输出: [d, c, b, a] (顺序可能不同)
}
}代码解释:
注意事项:
总结:
通过使用Stream API的flatMap操作和Collectors.toUnmodifiableSet()收集器,我们可以方便地从现有的不可变集合创建一个新的包含更多元素的不可变集合。 这种方法避免了直接修改原始集合,从而保持了其不可变性,并且避免了混合类型的集合。
以上就是创建不可变集合:从现有集合添加元素的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号