Java新特性解读JDK8之收集器partitioningBy和groupingBy分组函数

网友投稿 982 2022-10-06

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Java新特性解读JDK8之收集器partitioningBy和groupingBy分组函数

partitioningBy

返回值Map>,key是Boolean类型,只能分两组

使用如下:

package com.example.streamdemo;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.stream.Collectors;public class PartitioningByDemo { public static void main(String[] args) { List asList = Arrays.asList(1,2,3,80,90,100); Map> map = asList.stream().collect(Collectors.partitioningBy(obj->obj>60)); List list = map.get(true); List list2 = map.get(false); System.out.println(list); System.out.println(list2); }}

groupingBy

可以根据各种属性进行分组,分组个数不受限制,并且可以分组后统计个数

使用如下:

package com.example.streamdemo;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.stream.Collectors;public class GroupingByDemo { public static void main(String[] args) { //分组 List asList = Arrays.asList(new Person(20, "jack"),new Person(20, "tony"),new Person(22, "jerry"), new Person(22, "marry"),new Person(25, "jony"),new Person(25, "bob"),new Person(27, "james")); Map> map = asList.stream().collect(Collectors.groupingBy(obj->obj.getAge())); map.forEach((key,value)->{ System.out.println(key+"=="); value.forEach(obj->System.out.println(obj.getName())); }); //分组统计 Map map2 = asList.stream().collect(Collectors.groupingBy(obj->obj.getAge(), Collectors.counting())); map2.forEach((key,value)->{ System.out.println(key+"年龄人数:"+map2.get(key)); }); }}class Person{ private int age; private String name; public Person() { super(); } public Person(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name;  }}

上一篇:刷新世界纪录:口述中文转SQL,准确率高达92%,
下一篇:达梦数据库新机遇:完成亿元级A轮融资
相关文章

 发表评论

暂时没有评论,来抢沙发吧~