Jdk17中的Stream.toList()

前言

Jdk17以前,如果需要将Stream流中的元素转换成List,需要通过调用Collectors方法使用Collectors.toList(),JDK17之后可以使用Stream.toList()

toList()使用

ini 复制代码
public class ToListDemo {

    public static void main(String[] args) {
        List<Integer> list = List.of(1, 2, 3, 4, 5, 6);
        List<Integer> list1 = list.stream().map(e -> e + 1).toList();
        System.out.println(list1);
    }
}

输出结果为

使用注意

使用toList()生成的List是一个不可改变的数组,即新增和移除都会报错

新增

ini 复制代码
public class ToListDemo {

    public static void main(String[] args) {
        List<Integer> list = List.of(1, 2, 3, 4, 5, 6);
        List<Integer> list1 = list.stream().map(e -> e + 1).toList();
        list1.add(2);
        System.out.println(list1);
    }
}

移除

ini 复制代码
public class ToListDemo {

    public static void main(String[] args) {
        List<Integer> list = List.of(1, 2, 3, 4, 5, 6);
        List<Integer> list1 = list.stream().map(e -> e + 1).toList();
        list1.remove(2);
        System.out.println(list1);
    }
}

更新

ini 复制代码
public class ToListDemo {

    public static void main(String[] args) {
        List<Integer> list = List.of(1, 2, 3, 4, 5, 6);
        List<Integer> list1 = list.stream().map(e -> e + 1).toList();
        list1.set(0, 1);
        System.out.println(list1);
    }
}

总结

Stream.toList()收集出来的list实际类是UnmodifiableList这个类,如果不想结果被修改就可以使用

相关推荐
这里有鱼汤几秒前
Python量化实盘踩坑指南:分钟K线没处理好,小心直接亏钱!
后端·python·程序员
a5876911 分钟前
Elasticsearch核心概念与Java实战:从入门到精通
java·es
这里有鱼汤16 分钟前
分享一个实用的主力抄底的“三合一指标”:主力吸货 + 风险 + 趋势
后端
IT_陈寒1 小时前
React性能优化:这5个Hook技巧让我的组件渲染效率提升50%(附代码对比)
前端·人工智能·后端
Captaincc1 小时前
9 月 20 日,TRAE Meetup@Guangzhou 相聚羊城
人工智能·后端
Brookty1 小时前
【JavaEE】线程安全-内存可见性、指令全排序
java·开发语言·后端·java-ee·线程安全·内存可见性·指令重排序
风象南1 小时前
SpringBoot Jar包冲突在线检测
后端
tellmewhoisi1 小时前
前置配置1:nacos 基本配置(注册与发现)
java
程序员爱钓鱼1 小时前
Go语言实战案例 — 项目实战篇:任务待办清单 Web 应用
后端·google·go