Java8:2万字20个实例玩转集合—筛选、归约、分组、聚合( 二 )
// import已省略 , 请自行添加 , 后面代码亦是public class StreamTest { public static void main(String[] args) {List
3.2 筛选(filter)筛选 , 是按照一定的规则校验流中的元素 , 将符合条件的元素提取到新的流中的操作 。
文章插图
案例一:筛选出Integer集合中大于7的元素 , 并打印出来
public class StreamTest { public static void main(String[] args) {List
预期结果:
8 9
案例二: 筛选员工中工资高于8000的人 , 并形成新的集合 。形成新集合依赖collect(收集) , 后文有详细介绍 。
public class StreamTest { public static void main(String[] args) {List personList = new ArrayList();personList.add(new Person("Tom", 8900, 23, "male", "New York"));personList.add(new Person("Jack", 7000, 25, "male", "Washington"));personList.add(new Person("Lily", 7800, 21, "female", "Washington"));personList.add(new Person("Anni", 8200, 24, "female", "New York"));personList.add(new Person("Owen", 9500, 25, "male", "New York"));personList.add(new Person("Alisa", 7900, 26, "female", "New York"));List fiterList = personList.stream().filter(x -> x.getSalary() > 8000).map(Person::getName).collect(Collectors.toList());System.out.print("高于8000的员工姓名:" + fiterList); }}
运行结果:
高于8000的员工姓名:[Tom, Anni, Owen]
3.3 聚合(max/min/count)max、min、count这些字眼你一定不陌生 , 没错 , 在mysql中我们常用它们进行数据统计 。 Java stream中也引入了这些概念和用法 , 极大地方便了我们对集合、数组的数据统计工作 。
文章插图
案例一:获取String集合中最长的元素 。
public class StreamTest { public static void main(String[] args) {List list = Arrays.asList("adnm", "admmt", "pot", "xbangd", "weoujgsd");Optional max = list.stream().max(Comparator.comparing(String::length));System.out.println("最长的字符串:" + max.get()); }}
输出结果:
最长的字符串:weoujgsd
案例二:获取Integer集合中的最大值 。
public class StreamTest { public static void main(String[] args) {List
输出结果:
自然排序的最大值:11自定义排序的最大值:11
案例三:获取员工工资最高的人 。
public class StreamTest { public static void main(String[] args) {List personList = new ArrayList();personList.add(new Person("Tom", 8900, 23, "male", "New York"));personList.add(new Person("Jack", 7000, 25, "male", "Washington"));personList.add(new Person("Lily", 7800, 21, "female", "Washington"));personList.add(new Person("Anni", 8200, 24, "female", "New York"));personList.add(new Person("Owen", 9500, 25, "male", "New York"));personList.add(new Person("Alisa", 7900, 26, "female", "New York"));Optional max = personList.stream().max(Comparator.comparingInt(Person::getSalary));System.out.println("员工工资最大值:" + max.get().getSalary()); }}
输出结果:
员工工资最大值:9500
案例四:计算Integer集合中大于6的元素的个数 。
import java.util.Arrays;import java.util.List;public class StreamTest { public static void main(String[] args) {List
输出结果:
list中大于6的元素个数:4
3.4 映射(map/flatMap)映射 , 可以将一个流的元素按照一定的映射规则映射到另一个流中 。 分为map和flatMap:
- 加急|古代8百里加急究竟有多快?需要骑马20个小时,速度媲美顺丰快递!
- 建成|“听”书全覆盖,大连建成20个“残疾人有声图书馆”
- Harvest被攻击,20个ETH套利2400万美元,CRV却涨了
- 品牌|品牌能够采用的20个推特创意技巧
- 未来|创“芯”未来!20个高新技术产业项目落子德清天安云谷
- 项目|创“芯”未来!20个高新技术产业项目落子德清天安云谷
- 京东华硕RTX3080被指耍猴,数十万人预定,只有20个评论
- Java8新特性探索之函数式接口
- 5G+工业互联网发展报告:20个省市政策支持,应用是重点
- 黑马|一年销量两个亿!他仅花了20个月,做成拼多多上最大的行业黑马