Java8流式操作笔记

2019-06-25  本文已影响0人  塔塔斯坦

java8的新特性,非新数据结构,

源可以是集合或数组,可以对源过滤、排序、映射等(每一步返回的都是流对象),最后对流中数据整合


获取流

listobj.stream()

Stream.of(....)

listobj.stream.parallel或listobj.parallelStream() 获得并行流,提高速度

java.util.stream.LongStream.rangeClosed(0L,10L)

Arrays.stream


中间操作

s.filter过滤

s.distinct去重,根据hashCode和equals规则对比

s.sorted()和sorted(Comparator)

s.limit 截断取前n个

s.skip 跳过n个

s.map 元素映射, 这些基本类似于python的列表解析

s.flatMap(function)  function接收原始流中元素,返回一个流, 最终flatMap的结果是把每个元素整出来的流汇总成一个流,比如原来是[array(h,e,l,l,o),array(w,o,r,l,d)],处理后变成[h,e,l,l,o,w,o,r,l,d],相当于把原始流中的元素平铺开了


最终整合操作

s.collect(Collectors.toList())  s.collect(Collectors.toMap(......))

s.reduce 迭代计算,最后得出一个reduce后的元素

s.min/max 

s.anyMatch/allMatch/nonMatch  返回布尔型,是否存在满足/是否全部满足/是否都不满足

s.count 个数

s.forEach 对每个元素操作

s.findFirst 获取流中第一个元素

s.findAny 获取流中任意一个元素(其实也是第一个, 在并行流情况下的结果运行多次可能不一样,因为看哪个cpu片先抢先运行就返回他那小段的第一个)


Collectors工具类

toList/toSet/toMap

maxBy/minBy  参数是一个Comparator, 通过给定的比较规则选出最大/最小的元素

joining 讲流中元素拼接成字符串

summingInt/summingFloat/..  计算int类型的和,

averagingInt/..  计算平均

summarizingInt/.. 获取描述统计信息,里边有元素个数,和,平均数, 最大最小等

上一篇下一篇

猜你喜欢

热点阅读