通俗地讲,流是支持类似数据库操作的“花哨的迭代器”。技术上讲,它是从某个数据源获得的支持聚合操作的元素序列。我们的视频流媒体服务器EasyNVR、EasyDSS等,都是属于流。
流接口在java.util.stream.Stream定义了许多操作,这些可以分为以下两类:
- filter,sorted和map一样的可以被连接起来形成一个管道的操作。
- collect,findFirst和allMatch一样的终止管道并返回数据的操作。
可以被连接起来的操作被称为中间操作,它们能被连接起来是因为都返回流。本文我们讲一下JAVA8的流式编程——常用流操作。
JAVA8的常用流操作
方法还是很多的,根据操作返回结果不同,我们大致进行一下分类,也就是返回stream的就是中间操作,其他的,返回具体对象的就是最终操作:
中间操作:
filter(): 对元素进行过滤
sorted():对元素排序
map():元素映射
distinct():去除重复的元素
最终操作:
forEach():遍历每个元素。
findFirst():找第一个符合要求的元素。
reduce():把Stream 元素组合起来。例如,字符串拼接,数值的 sum,min,max ,average 都是特殊的 reduce。
collect():返回一个新的集合。
min():找到最小值。
max():找到最大值。
需要注意的是,一般中间操作之后,都是为了进行最终操作,得到我们需要的对象。
示例:
Java8以前我们常用的编程范式是命令式编程,使用起来比较复杂和繁琐,所以老是有很多新语言标榜自己的简单明了,强调Java的笨重,现在Java也加入了函数式编程,是代码看起来更加简洁与灵活,java流式编程主要操作对象是集合,为集合添加了查找、过滤、分组、排序等一系列的增强操作,使用起来更加方便。