编辑
2025-07-21
JAVA知识
00
请注意,本文编写于 65 天前,最后修改于 8 天前,其中某些信息可能已经过时。

前景

此业务场景在工作使用中发现、使用stream流.toList() 创建的集合对象无法修改

java
List<Integer> list1 = list.stream().toList(); List<Integer> list2 = list.stream().collect(Collectors.toList());
  • 上面是两个不同stream流创建集合的方法
  • 有时候idea还会提示你替换它?
  • 你以为他们的特性是一样的?
  • 那就大错特错了!!!
java
class java.util.ImmutableCollections$ListN class java.util.ArrayList
  • 第一个返回的结果和第二个返回的结果完全不一样
  • .toList()返回ImmutableCollections$ListN
  • .collect(Collectors.toList())返回ArrayList
  • 所以当你操作使用.toList()返回的结果就会出现异常
  • 因为该集合对象是不可被修改的

提示

toList() 是JDK16后的特性

本文作者:tiger

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!