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

相关推荐
城管不管12 分钟前
重生——第十次面试之开源中国一面挂
java·linux·开发语言·算法·面试·职场和发展·开源
Java小白笔记16 分钟前
Windows系统免软件命令激活
java·网络·人工智能·windows·ai·ai编程
爱敲键盘的猴子25 分钟前
深入理解 Java HashMap
java·hashmap
霸道流氓气质25 分钟前
Java开发者AI编程常用MCP、Skills、Rules全景汇总
java·开发语言·ai编程
魔兽大山哥29 分钟前
提示词注入很热闹:NL2SQL 里它打得穿 Prompt,打不穿执行层
后端
智能架构人生29 分钟前
Java开发者技能如何迁移到Kotlin
后端
程序员老赵29 分钟前
Docker 部署禅道 ZenTao:轻松搭建研发项目管理平台
前端·后端·github
字节跳动数据库30 分钟前
火山 PostgreSQL Serverless × 飞书妙搭:把 AI 装进数据库,一句话唤醒数据智能
数据库·人工智能·后端
倾颜32 分钟前
# Node.js Event Loop 到底是怎么工作的?从一段异步代码讲清事件循环
后端
Scene21635 分钟前
旧 REST 接口封装成 MCP 服务:完整实战指南
人工智能·后端