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

相关推荐
mask哥2 天前
详解flink性能优化
java·大数据·微服务·性能优化·flink·kafka·stream
中草药z2 天前
【Stream API】高效简化集合处理
java·前端·javascript·stream·parallelstream·并行流
mask哥5 天前
详解kafka streams(二)
java·大数据·微服务·flink·kafka·stream·流式操作
上单带刀不带妹7 天前
Node.js 的流(Stream)是什么?有哪些类型?
node.js·stream·js
ruan1145142 个月前
Java Lambda 类型推断详解:filter() 方法与 Predicate<? super T>
java·开发语言·spring·stream
小雨的光3 个月前
JDK8中的 Stream流式编程用法优化(工具类在文章最后)
java·stream·jdk8
樱阙诗汀5 个月前
Stream流式编程工具类,开发必备
java·stream·流式编程
Klong.k5 个月前
什么是 Stream
java·stream
DN金猿5 个月前
List、Set集合通过Stream流求和
list·stream·java8
茶本无香5 个月前
Optional的stream方法,flatMap, filter应用
java·stream·filter·optional·flatmap