Stream API

Stream 是 Java 8 引入的函数式数据处理 API,适合对集合、数组、文件行等数据源进行流水线处理。

Stream 的重要特点:

  • Stream 不存储数据,只描述计算过程

  • Stream 不修改原集合,通常产生新结果

  • 中间操作是惰性的,只有遇到终止操作才真正执行

  • Stream 通常只能消费一次,不能重复使用同一个 Stream

Stream操作的三个步骤

一个 Stream 管道通常包含三部分:

List<String> result = names.stream()        // 数据源
    .filter(name -> name.length() >= 3)     // 中间操作
    .map(String::toUpperCase)               // 中间操作
    .toList();                              // 终止操作

中间操作返回新的 Stream,例如 filtermapsorted;终止操作返回最终结果或产生副作用,例如 toListcountforEachreduce

如何获取流

通过集合Collection的stream方法获取流

List<Integer> numbers1 = List.of(1,2,3,4,5);//有序的
Set<Integer> numbers2 = Set.of(6,7,8,9,10);//无序的

串行流:有序的,每次按顺序取一个元素进行计算

Stream<Integer> s1 = numbers1.stream();//流
Stream<Integer> s2 = numbers2.stream();

因为Set是无序的,因此每次获取流之前无法确定顺序,但是一旦获取到流后顺序就确定了(取流之前顺序不确定,取流之后顺序就确定了)

并行流:无序的,同时取元素进行并行运算(暂时了解)

Stream<Integer> s3 = numbers1.parallelStream();
THE END
文章版权归Tinsur.cn所有,转载分享请标注原链接
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容