代码对比
✕ Java 8
List<String> list = stream.collect(
Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList
)
);
✓ Java 16+
List<String> list = stream.toList();
发现此代码有问题? 告诉我们。
为什么现代方式更好
最简洁
stream.toList() 完全不需要 collect() 或 Collectors 导入。
真正不可变
结果列表在结构上不可修改。
更少导入
无需导入 java.util.stream.Collectors。
旧方式
collectingAndThen
现代方式
stream.toList()
自 JDK
16
难度
中级
JDK 支持
不可修改收集器
可用
自 JDK 16 起广泛可用(2021 年 3 月)
工作原理
Java 10 添加了 toUnmodifiableList()、toUnmodifiableSet() 和 toUnmodifiableMap()。Java 16 的 stream.toList() 更进一步,完全不需要 collect() 或 Collectors 导入。
相关文档