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

相关推荐
营赢盈英19 天前
using showdown js with openAi streaming response
开发语言·前端·javascript·stream·openai api
是枫似风1 个月前
消息驱动Stream---基于SpringCloud
java·spring boot·后端·spring·spring cloud·stream·消息分区
法尼的铁帽子1 个月前
stream流与Predicate结合对集合去重或获取重复元素
java·stream·java8
iFlyCai1 个月前
Flutter中的异步编程
flutter·stream·async·future·await·futurebuilder·flutter异步编程
Hello-Brand1 个月前
Redis系列:使用Stream实现消息队列 (图文总结+Go案例)
redis·stream·高性能·高可用·xadd·xread
伊织code2 个月前
python_rtmpstream - Python rtmp 推流
开发语言·python·ffmpeg·stream·推流·rtmp
逆天-逍遥哥哥2 个月前
JAVA8专题-Stream流操作详解
java·stream·java8
Ramboooooooo3 个月前
Stream Lua Nginx Module 插件一键安装
开发语言·nginx·lua·stream·stream-lua·lua-nginx
罗小爬EX3 个月前
Redis Stream & Redisson Stream
redis·redisson·stream·mq
DJyzh3 个月前
java8 List的Stream流操作 (实用篇 三)
数据结构·list·stream流·stream