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

相关推荐
哈哈哈笑什么1 分钟前
全面拆解离线→同步的10大核心问题【落地的完整方案(思路+架构+代码)】
后端
Java水解4 分钟前
[Spring] Spring配置文件
后端·spring
稳住别浪6 分钟前
DRF框架认证底层源码解析——简单易理解!
后端
马卡巴卡9 分钟前
SpringBoot项目使用Redis对用户IP进行接口限流
后端
VX:Fegn089511 分钟前
计算机毕业设计|基于springboot + vue酒店预约系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
杀死那个蝈坦11 分钟前
Caffeine
java·jvm·spring cloud·tomcat
n***271913 分钟前
JAVA (Springboot) i18n国际化语言配置
java·spring boot·python
汤姆yu14 分钟前
基于springboot的校园家教信息系统
java·spring boot·后端·校园家教
q***062916 分钟前
Spring Boot--@PathVariable、@RequestParam、@RequestBody
java·spring boot·后端
urkay-18 分钟前
Android 切换应用语言
android·java·kotlin·iphone·androidx