朝花夕拾

A Development Engineer, a Life Liver, a Hope Holder

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))
  2. 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())
  3. 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)