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和求最值示例的主要内容,如果未能解决你的问题,请参考以下文章

kd树的创建和求最近邻

高等数学 —— 二元函数极值存在定理与拉格朗日乘数法求最值

HDU1832 二维线段树求最值(模板)

java中的求最值问题,求指点~~~~~~~~~

求最值背景下动态删除线段树节点

2017 3月29日 上午