直接调用list.stream()是最标准方式;ArrayList实现Collection接口,可直接使用其默认stream()方法,无需Arrays.stream()或Stream.of()等冗余操作,但需注意null校验。

直接调用 stream() 方法即可,这是最标准、最常用的方式。
ArrayList 转 Stream 的基本写法
ArrayList 实现了 Collection 接口,而 Collection 接口中定义了默认方法 stream(),所以所有 ArrayList 实例都能直接调用:
Listlist = new ArrayList(Arrays.asList("张三", "李四", "王五")); Streamstream = list.stream();
之后就可以链式调用 filter、map、sorted 等中间操作,再配合 forEach、collect 等终结操作完成处理。
常见误操作提醒
不需要额外包装或转换,以下做法都是冗余或错误的:
- ❌ 不要用
Arrays.stream(list.toArray())—— 效率低且可能引发泛型擦除问题(比如转成 Object[] 后再流式处理) - ❌ 不要手动遍历再塞进 Stream.of(...) —— 完全没必要
- ✅ 正确姿势永远是
list.stream(),简洁安全,支持泛型推导
配合实际业务的典型用法
比如筛选姓“张”且长度为 3 的名字,并收集为新 List:
Listresult = list.stream() .filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).collect(Collectors.toList());
整个过程不修改原 ArrayList,也不生成中间集合,符合函数式编程思想。
注意 null 安全性
list.stream() 本身不判空,如果 list 是 null,会抛 NullPointerException。生产环境建议先校验:
if (list != null) { list.stream().... }- 或者用 Optional 封装:
Optional.ofNullable(list).map(List::stream).orElseGet(Stream::empty)











