What's the purpose of partitioningBy

前端 未结 5 592
粉色の甜心
粉色の甜心 2020-12-03 04:20

For example, if I intend to partition some elements, I could do something like:

Stream.of(\"I\", \"Love\", \"Stack Overflow\")
      .collect(Collectors.part         


        
5条回答
  •  半阙折子戏
    2020-12-03 05:14

    partitioningBy method will return a map whose key is always a Boolean value, but in case of groupingBy method, the key can be of any Object type

    //groupingBy
    Map> list2 = new HashMap>();
    list2 = list.stream().collect(Collectors.groupingBy(p->p.getAge()==22));
    System.out.println("grouping by age -> " + list2);
    
    //partitioningBy
    Map> list3 = new HashMap>();
    list3 = list.stream().collect(Collectors.partitioningBy(p->p.getAge()==22));
    System.out.println("partitioning by age -> " + list2);
    

    As you can see, the key for map in case of partitioningBy method is always a Boolean value, but in case of groupingBy method, the key is Object type

    Detailed code is as follows:

        class Person {
        String name;
        int age;
    
        Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public int getAge() {
            return age;
        }
    
        public String toString() {
            return this.name;
        }
    }
    
    public class CollectorAndCollectPrac {
        public static void main(String[] args) {
            Person p1 = new Person("Kosa", 21);
            Person p2 = new Person("Saosa", 21);
            Person p3 = new Person("Tiuosa", 22);
            Person p4 = new Person("Komani", 22);
            Person p5 = new Person("Kannin", 25);
            Person p6 = new Person("Kannin", 25);
            Person p7 = new Person("Tiuosa", 22);
            ArrayList list = new ArrayList<>();
            list.add(p1);
            list.add(p2);
            list.add(p3);
            list.add(p4);
            list.add(p5);
            list.add(p6);
            list.add(p7);
    
            // groupingBy
            Map> list2 = new HashMap>();
            list2 = list.stream().collect(Collectors.groupingBy(p -> p.getAge() == 22));
            System.out.println("grouping by age -> " + list2);
    
            // partitioningBy
            Map> list3 = new HashMap>();
            list3 = list.stream().collect(Collectors.partitioningBy(p -> p.getAge() == 22));
            System.out.println("partitioning by age -> " + list2);
    
        }
    }
    

提交回复
热议问题