stream().toList()的大坑,你真的了解吗

stream().toList()

下面这两行代码相同吗?

ini 复制代码
List<Integer> list1 = list.stream().toList();
List<Integer> list2 = list.stream().collect(Collectors.toList());

在Idea里,Idea还会提醒你可以替换,难道真的是相同的api吗?

我们直接打印一下它们的Class

Java 复制代码
List<Integer> list1 = list.stream().toList();
List<Integer> list2 = list.stream().collect(Collectors.toList());
System.out.println(list1.getClass());
System.out.println(list2.getClass());
kotlin 复制代码
class java.util.ImmutableCollections$ListN
class java.util.ArrayList

发现一个是ImmutableCollection,一个是ArrayList

从名字中就可以看出来list1是不可变的,remove一下果然抛出了异常

Java 复制代码
// all mutating methods throw UnsupportedOperationException
@Override public void    add(int index, E element) { throw uoe(); }
@Override public boolean addAll(int index, Collection<? extends E> c) { throw uoe(); }
@Override public E       remove(int index) { throw uoe(); }
@Override public void    replaceAll(UnaryOperator<E> operator) { throw uoe(); }
@Override public E       set(int index, E element) { throw uoe(); }
@Override public void    sort(Comparator<? super E> c) { throw uoe(); }
相关推荐
神奇小汤圆几秒前
百度面试官:Redis 内存满了怎么办?你有想过吗?
后端
lifallen几秒前
Flink Agent:RunnerContext 注入与装配演进分析
java·大数据·人工智能·语言模型·flink
爱丽_2 分钟前
Tomcat 从 Socket 到 Servlet:机制主线、参数调优与线上排障(实战)
java·servlet·tomcat
喵个咪2 分钟前
Headless 架构优势:内容与展示解耦,一套 API 打通全端生态
前端·后端·cms
开心就好20254 分钟前
HTTPS超文本传输安全协议全面解析与工作原理
后端·ios
小江的记录本6 分钟前
【JEECG Boot】 JEECG Boot——数据字典管理 系统性知识体系全解析
java·前端·spring boot·后端·spring·spring cloud·mybatis
神奇小汤圆7 分钟前
Spring Batch实战
后端
卖男孩的小火柴.8 分钟前
java内置方法总结及基础算法
java·算法
赫瑞8 分钟前
Java中的日期类
java·开发语言
喵个咪9 分钟前
传统 CMS 太笨重?试试 Headless 架构的 GoWind,轻量又强大
前端·后端·cms