在 Java 16 及更高版本中,可以直接使用 Stream
的 toList()
方法替代 collect(Collectors.toList())
。 您提到的代码优化建议是正确的。在 Java 16 及更高版本中,可以直接使用 Stream
的 toList()
方法替代 collect(Collectors.toList())
。
新旧对比:
旧写法(Java 8 及以后):
ini
List<String> list = stream.collect(Collectors.toList());
新写法(Java 16 及以后):
ini
List<String> list = stream.toList();
优点:
- 更简洁:减少了代码量,提高了可读性
- 不变性 :
toList()
返回的是不可变列表,而Collectors.toList()
返回的是可变列表 - 性能:作为内置方法可能有更好的优化
注意事项:
toList()
返回的是不可变列表,如果需要可变列表仍需使用Collectors.toList()
- 这是 Java 16 引入的新特性,需要确保项目使用的 Java 版本 ≥ 16
其他类似的简化:
Java 16 还引入了其他类似的简化方法:
Stream.toList()
替代collect(Collectors.toList())
Stream.mapMulti()
替代某些flatMap
场景- 新增
Stream.toList()
的直接方法
总结
toList()
更简洁、更安全(不可变),适合大多数只读场景。collect(Collectors.toList())
更灵活(可变、允许null
),适合需要修改列表的情况。