关于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的内容是不能发生变化的

相关推荐
小雨的光12 天前
JDK8中的 Stream流式编程用法优化(工具类在文章最后)
java·stream·jdk8
樱阙诗汀1 个月前
Stream流式编程工具类,开发必备
java·stream·流式编程
Klong.k2 个月前
什么是 Stream
java·stream
DN金猿2 个月前
List、Set集合通过Stream流求和
list·stream·java8
茶本无香2 个月前
Optional的stream方法,flatMap, filter应用
java·stream·filter·optional·flatmap
丁总学Java3 个月前
深入解析 Java Stream API:筛选根节点的优雅实现!!!
java·stream·collectors·lambda 表达式
丁总学Java3 个月前
深入解析 Java Stream API:从 List 到 Map 的优雅转换!!!
java·list·map·stream·方法引用·collectors·lambda 表达式
练川3 个月前
Stream特性(踩坑):惰性执行、不修改原始数据源
java·stream
会code的厨子4 个月前
Stream流简单使用
java·stream
似水流年风萧兮4 个月前
【java stream 使用案例】根据某个字段进行分组
java·stream