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

相关推荐
李燚2 天前
流式管道:Pipe、StreamReader、背压控制
agent·stream·pipe·aiagent·streamreader
NG4772 天前
【微服务学习笔记】stream与zipkin的操作和使用
微服务·stream·zipkin
金融支付架构实战指南6 天前
秒杀&支付订单异步落地|Redis Stream 可靠队列实战
数据库·redis·缓存·stream·秒杀
愤怒的苹果ext15 天前
Spring Boot Redis Stream队列
spring boot·redis·消息队列·stream
一条泥憨鱼25 天前
Stream流-从进阶到起飞
java·ide·后端·stream
C雨后彩虹2 个月前
Java Lambda & Stream 避坑指南:20个高频错误案例分析与修复
java·stream·lambda·并行流
鬼先生_sir2 个月前
SpringCloud-Stream + RocketMQ/Kafka
spring cloud·kafka·rocketmq·stream
大熊猫侯佩3 个月前
浣熊市生存手册:在 Xcode 预览中驯服“支离破碎”的 AI 流式数据
swiftui·stream·xcode 26·generable·foundationmodel·xcode previews·partially gener
苏渡苇3 个月前
Stream.collect() 的花式玩法:Collector.of() 自定义收集器
java·stream·jdk21·collector·jdk8+·自定义收集器
C雨后彩虹3 个月前
深入探索Java Stream:6个复杂业务场景下的高效实现方案
java·多线程·stream·同步·异步