跳至内容

拾光小记

JAVA8-GroupingBy

if we want to group a list with key. we can use new JAVA8 API->groupyingBy。this api provides opretor which can group a list like SQL(select … form… where… group by)

this new API has three overload metheds

  1. one param
    class Person {
         private String name;
         private int age;
         // getter setter...
    }

    List<Person> persons = ...
    // classify person by name
    persons.stream.collect(Collectors.groupingBy(Person::getName))
  1. two params
    class Person {
         private String name;
         private int age;
         private int sex; 
         // getter setter...
    }

    List<Person> persons = ...
    // classify by sex(male & female) and caculate the count
    // of sex
    persons.stream.collect(Collectors.groupingBy(Person::getSex), counting())
  1. three params
    class Person {
         private String name;
         private int age;
         private int sex; 
         // getter setter...
    }

    List<Person> persons = ...
    // classify by sex(male & female) and caculate the count
    // of sex
    persons.stream.collect(Collectors.groupingBy(Person::getSex), counting(), toList)