JAVA集合06_流式编程GroupBy和求最值示例
Posted 所得皆惊喜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA集合06_流式编程GroupBy和求最值示例相关的知识,希望对你有一定的参考价值。
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, "土木工程", "南京大学"));
;
// group by统计用法示例
Map<String, Long> groupCount =
students.stream().collect(Collectors.groupingBy(Student::getSchool, Collectors.counting()));
//输出:南京大学=1, 武汉大学=2, 华中科技大学=2
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));
/* 输出:
南京大学=[Student(id=20163001, name=丁奉, age=24, grade=5, major=土木工程, school=南京大学)],
武汉大学=[
Student(id=20160001, name=孔明, age=20, grade=1, major=土木工程, school=武汉大学),
Student(id=20160003, name=玄德, age=22, grade=3, major=经济管理, school=武汉大学)
],
华中科技大学=[
Student(id=20161001, name=翼德, age=21, grade=2, major=机械与自动化, school=华中科技大学),
Student(id=20161003, name=奉孝, age=23, grade=4, major=计算机科学, school=华中科技大学)
]
*/
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;
以上是关于JAVA集合06_流式编程GroupBy和求最值示例的主要内容,如果未能解决你的问题,请参考以下文章