Stream作为java8的新特性,基于lambda表达式,是对集合对象功能的增强,它专注于对集合对象进行各种高效、便利的聚合操作或者大批量的数据操作,提高了编程效率和代码可读性。
Stream的原理:将要处理的元素看做一种流,流在管道中传输,并且可以在管道的节点上处理,包括过滤筛选、去重、排序、聚合等。元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。
首先创建一个实体类:
-
Filter(筛选):
-
Map(处理转换):
-
Distinct(去重):
对基本类型的去重:
对对象的去重要重写equals和hashcode方法:
-
Sorted(排序):
使用比较器进行排序:
-
Limit(返回前N个元素):
-
Skip(跳过前N个元素,返回剩余的元素):
-
Reduce(聚合元素):
也可对基本类型的元素进行聚合,Optional是用来处理nullPointer的。
-
Min(使用比较器求某属性最小的元素):
求最大值的max类似。
-
Match(匹配),分为anyMatch,allMatch,noneMatch:
anyMatch:Stream 中任意一个元素符合传入的 predicate,返回 true
allMatch:Stream 中全部元素符合传入的 predicate,返回 true
noneMatch:Stream 中没有一个元素符合传入的 predicate,返回 true