Java中将List转为Stream最直接的方式是调用list.stream()获取顺序流,或list.parallelStream()获取并行流;流只能消费一次,且stream()不修改原列表、惰性求值。
Java 中将 List 转为 Stream 最直接的方式是调用 List 接口继承的 stream() 方法。
List 是 Collection 的子接口,而 Collection 定义了 stream() 默认方法,因此所有 List 实现(如 ArrayList、LinkedList)都可直接调用:
list.stream() 返回一个**顺序流(Sequential Stream)**,元素顺序与原列表一致filter、map)和终结操作(如 collect、forEach)如果需要利用多核提升处理性能,可改用 parallelStream():
list.parallelStream() 返回并行流,底层基于 ForkJoinPool
findFirst),结果可能不可预期流只能消费一次,重复调用终结操作会抛出 IllegalStateException:
立即学习“Java免费学习笔记(深入)”;
list.stream()
stream() 不修改原列表,是惰性求值,仅在终结操作触发时才执行虽然可通过 StreamSupport.stream(list.spliterator(), false) 手动创建,但没必要:
list.stream() 内部正是这样实现的Spliterator 特性(如估算大小、拆分策略),否则无需绕路