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这个类,如果不想结果被修改就可以使用

相关推荐
德思特35 分钟前
从 Dify 配置页理解 RAG 的重要参数
java·人工智能·llm·dify·rag
YOU OU1 小时前
Spring IoC&DI
java·数据库·spring
один but you1 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
IT_陈寒1 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端
是码龙不是码农2 小时前
ThreadPoolExecutor 7 个核心参数详解
java·线程池·threadpool
kyriewen2 小时前
面试官让我查各部门工资最高的员工,我用AI三秒写出窗口函数,他愣了
后端·mysql·面试
这是程序猿2 小时前
Spring Boot自动配置详解
java·大数据·前端
文心快码BaiduComate2 小时前
干货|Comate Harness Engineering工程实践指南
前端·后端·程序员
光辉GuangHui2 小时前
Agent Skill 也需要测试:如何搭建 Skill 评估框架
前端·后端·llm
MY_TEUCK2 小时前
【Java 后端 | Nacos 注册中心】微服务治理原理、选型与注册发现实战
java·开发语言·微服务