1.1 样例
package com.java8.list;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class TestList {
public static void main(String[] args) {
List<Person> personList = new ArrayList<Person>() {{
add(new Person(1, "小明", 11, 1));
add(new Person(2, "小红", 12, 0));
add(new Person(3, "小兰", 13, 0));
add(new Person(4, "小强", 14, 0));
add(new Person(5, "小咪", 10, 1));
add(new Person(6, "小子", 11, 1));
add(new Person(7, "小虾", 12, 1));
}};
Map<Integer, Map<Integer, List<Person>>> groupsMap = personList.stream().collect(
Collectors.groupingBy(Person::getSex,
Collectors.groupingBy(Person::getAge)));
groupsMap.forEach((sex, sexMap) -> sexMap.forEach((age, value) -> {
System.out.println(value);
}));
}
}
1.2 结果解析

1.3 实体类
package com.java8.list;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class Person {
private Integer id;
private String name;
private Integer age;
private Integer sex;
public Person() {
}
public Person(Integer id, String name, Integer age, Integer sex) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
}