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

相关推荐
苏渡苇3 天前
Stream.collect() 的花式玩法:Collector.of() 自定义收集器
java·stream·jdk21·collector·jdk8+·自定义收集器
C雨后彩虹8 天前
深入探索Java Stream:6个复杂业务场景下的高效实现方案
java·多线程·stream·同步·异步
曲幽18 天前
FastAPI流式输出实战与避坑指南:让AI像人一样“边想边说”
python·ai·fastapi·web·stream·chat·async·generator·ollama
J_liaty1 个月前
Java Stream流常用方法归纳整理
java·stream
Jack_abu2 个月前
stream().toList()与.collect(Collectors.toList())
java·stream·jdk8
没有bug.的程序员2 个月前
Spring Cloud Stream:消息驱动微服务的实战与 Kafka 集成终极指南
java·微服务·架构·kafka·stream·springcloud·消息驱动
Elias不吃糖2 个月前
Java Stream 流(Stream API)详细讲解
java·stream·
就这个丶调调3 个月前
Java中Stream流的全面解析与实战应用
java·stream·函数式编程·java8·集合操作
weixin_531651813 个月前
NODEJS Stream 背压原理
nodejs·stream
weixin_531651813 个月前
Node.js 流操作
node.js·node·stream