partitioningBy
返回值Map<Boolean, List<T>>,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<Integer> asList = Arrays.asList(1,2,3,80,90,100);Map<Boolean, List<Integer>> map = asList.stream().collect(Collectors.partitioningBy(obj->obj>60));List<Integer> list = map.get(true);List<Integer> 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<Person> 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<Integer, List<Person>> 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<Integer, Long> 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;}}
文章转载自227decision,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




