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

相关推荐
我不会起名字3222 天前
Redis 从 0 到 1(十八):List、Pub/Sub、Stream 为什么生产只用 Stream?Go 实操
redis·消息队列·go·stream·pub/sub
鱼宵8 天前
Stream 终端操作一次讲透:collect、count、reduce 怎么选
java·stream·终端操作
鱼宵8 天前
CSV 怎么做销售报表?Stream 第 9 课:读洗聚排打五段管道一次跑通
java·报表·stream
\光辉岁月/13 天前
javaSE8-新特性-Stream&Option
java·stream·option
\光辉岁月/20 天前
14.JavaSE-IOStream
java·io·stream
Nebula_g1 个月前
JavaSE加强:IO流
java·开发语言·windows·stream·javase
Nebula_g1 个月前
JavaSE加强:Stream流
java·开发语言·windows·stream·javase·流
AI人工智能+电脑小能手1 个月前
Java 企业级工具类全家桶-48-分组聚合工具类
stream·jdk 17·java工具类·map集合·空值安全·分组聚合·计数求和
Luchang-Li2 个月前
CUDA stream创建和依赖,多流并行
stream·cuda·并行
带刺的坐椅2 个月前
不只是 Token 流:Solon AI 4.1 的语义化聊天事件
java·stream·event·solon-ai