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
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))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())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)