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/.. 获取描述统计信息,里边有元素个数,和,平均数, 最大最小等