Stream 是 Java 8 引入的函数式数据处理 API,适合对集合、数组、文件行等数据源进行流水线处理。
-
Stream 不存储数据,只描述计算过程
-
Stream 不修改原集合,通常产生新结果
-
中间操作是惰性的,只有遇到终止操作才真正执行
-
Stream 通常只能消费一次,不能重复使用同一个 Stream
Stream操作的三个步骤
List<String> result = names.stream() // 数据源
.filter(name -> name.length() >= 3) // 中间操作
.map(String::toUpperCase) // 中间操作
.toList(); // 终止操作
filter、map、sorted;终止操作返回最终结果或产生副作用,例如 toList、count、forEach、reduce
如何获取流
通过集合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

暂无评论内容