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

相关推荐
追逐时光者6 小时前
一款使用 C# 编写专为 Windows 11 打造的文件资源管理器增强工具!
后端·.net
风象南6 小时前
普通人用AI加持赚到的第一个100块
人工智能·后端
皮皮林5518 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河8 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
JavaGuide11 小时前
7 道 RAG 基础概念知识点/面试题总结
前端·后端
桦说编程11 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
格砸12 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
蝎子莱莱爱打怪12 小时前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
躺平大鹅13 小时前
Java面向对象入门(类与对象,新手秒懂)
java