mutest

Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合

这一生的挚爱 提交于 2020-11-27 00:22:10
先贴上几个案例,水平高超的同学可以挑战一下: 从员工集合中筛选出salary大于8000的员工,并放置到新的集合里。 统计员工的最高薪资、平均薪资、薪资之和。 将员工按薪资从高到低排序,同样薪资者年龄小者在前。 将员工按性别分类,将员工按性别和地区分类,将员工按薪资是否高于8000分为两部分。 用传统的迭代处理也不是很难,但代码就显得冗余了,跟Stream相比高下立判。 1 Stream概述 Java 8 是一个非常成功的版本,这个版本新增的 Stream ,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。 那么什么是 Stream ? Stream 将要处理的元素集合看作一种流,在流的过程中,借助 Stream API 对流中的元素进行操作,比如:筛选、排序、聚合等。 Stream 可以由数组或集合创建,对流的操作分为两种: 中间操作,每次返回一个新的流,可以有多个。 终端操作,每个流只能进行一次终端操作,终端操作结束后流无法再次使用。终端操作会产生一个新的集合或值。 另外, Stream 有几个特性: stream不存储数据,而是按照特定的规则对数据进行计算,一般会输出结果。 stream不会改变数据源,通常情况下会产生一个新的集合或一个值。 stream具有延迟执行特性,只有调用终端操作时,中间操作才会执行。 2 Stream的创建