public class groupByDemo {
public static void main(String[] args) {
List<Student> students = new ArrayList<Student>() {
{
add(new Student("20160001", "孔明", 20, 1, "土木工程", "武汉大学"));
add(new Student("20160003", "玄德", 22, 3, "经济管理", "武汉大学"));
add(new Student("20161001", "翼德", 21, 2, "机械与自动化", "华中科技大学"));
add(new Student("20161003", "奉孝", 23, 4, "计算机科学", "华中科技大学"));
add(new Student("20163001", "丁奉", 24, 5, "土木工程", "南京大学"));
}
};
Map<String, Long> groupCount =
students.stream().collect(Collectors.groupingBy(Student::getSchool, Collectors.counting()));
System.out.println(groupCount);
TreeMap<String, Set<String>> collectToSet =
students.stream().collect(Collectors.groupingBy(Student::getSchool, TreeMap::new, Collectors.mapping(Student::getName, Collectors.toSet())));
System.out.println(collectToSet);
Map<String, List<Student>> collect3 = students.stream().collect(Collectors.groupingBy(Student::getSchool));
System.out.println(collect3);
}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
class Student {
private String id;
private String name;
private int age;
private int grade;
private String major;
private String school;
}