4-流的基本介绍

流是什么

JDK1.8引入的新成员,以声明式方式处理集合数据.
将基础操作链接起来,完成复杂的数据处理流水线.
提供透明的并行处理.

流的简介

从支持数据处理操作的源生成的元素序列.

数据处理操作:流的数据处理功能类似于数据库的操作.以及函数式编程语言的常用操作.如filter,map,reduce,find,match,sort等.流操作可以顺序执行,也可并行执行.

源:流会使用一个提供数据的源,这些源可以是数组,集合,或输入输出资源.注意:从有序集合生成的流会保留原有顺序,由列表生成的流,其顺序也与列表一致.

元素序列:就像集合一样,提供了一个接口,可以访问特定元素的一组有序值.因为集合是数据结构,所以它的主要目的是以特定的时间/空间复杂度来存储访问元素.但流的目的在于表达计算.

流与集合的区别

时间与空间:集合是空间的元素存储.流是时间维度的元素生成.

流只能遍历一次.

与使用迭代器对集合进行显示迭代不同,流的迭代都是在背后进行的.

流的组成

数据源---->中间操作---->终端操作

流操作分类

中间操作(Intermediate)

无状态操作: filter/map/peek等

有状态操作: dictinct/sorted/limit等

终端操作(Terminal)

非短路操作: forEach/collect/count等
短路操作: anyMatch/findFirst/findAny等

流的使用

中间操作(无状态) 中间操作(有状态)

终端操作(短路)

终端操作(非短路)

过滤(filter)

映射(map)

扁平化(flatMap)

遍历(peek)

去重(distinct)

跳过(skip)

截断(limit)

排序(sorted)

所有匹配(allMatch)

任意匹配(anyMatch)

不匹配(noneMatch)

查找首个(findFirst)

查找任意(findAny)

遍历(forEach)

归约(reduce)

最大值(max)

聚合(collect)

最小值(min)

计数(count)

posted @ 2020-06-09 16:18  mingmingn  阅读(296)  评论(0)    收藏  举报