关于Stream.toList()方法使用小记

对照示例

java 复制代码
    public static void main(String[] args) {
        final List<String> list = new ArrayList<>();
        list.add("aa");
        list.add("bb");
        list.add("cc");
        list.remove("cc");
        System.out.println(list);
    }

结果:

Stream.toList

java 复制代码
    public static void main(String[] args) {
        String[] array = new String[]{"aa", "bb", "cc"};
        final List<String> list = Stream.of(array).toList();
        
        list.remove("cc");
        System.out.println(list);
    }

结果:

程序报错,怀疑Stream.toList()方法返回的是一个连内容都不可改变的List,有点类似List.of()方法生成的List,比如下面代码也会报和上面代码一样的错误:

java 复制代码
    public static void main(String[] args) {
        final List<String> list =  List.of("aa", "bb", "cc");
        list.remove("cc");
        System.out.println(list);
    }

解决方案

java 复制代码
    public static void main(String[] args) {
        String[] array = new String[]{"aa", "bb", "cc"};
        final List<String> list = new ArrayList(Stream.of(array).toList());
        // final List<String> list = new ArrayList(Arrays.asList(array));
        
        list.remove("cc");
        System.out.println(list);
    }

结论:

使用List.of()和Stream.toList()生成的List的内容是不能发生变化的

相关推荐
会code的厨子5 天前
Stream流简单使用
java·stream
似水流年风萧兮14 天前
【java stream 使用案例】根据某个字段进行分组
java·stream
小金三岁半16 天前
一、lambda表达式处理stream操作
stream·lambda
依恋、阳光22 天前
java的Stream流
java·开发语言·数据结构·stream
_板栗_1 个月前
Java8 - flatMap() 介绍
java·stream
love静思冥想2 个月前
Stream `Collectors.toList()` 和 `Stream.toList()` 的区别(Java)
java·stream
ssxueyi2 个月前
Paimon 是什么?Apache Paimon简介
大数据·流数据·stream·数据湖·流批一体·apache paimon
langzitianya2 个月前
RestTemplate实时接收Chunked编码传输的HTTP Response
springboot·stream·resttemplate·chunked·流式
J不A秃V头A3 个月前
Stream API来提取两个字符串字段
java·stream
A Everyman3 个月前
Java开发中对List<Map<String, Object>>集合去重并按大小拆分子列表
java·list·map·stream·collectors