展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

分组

partitioningBy分组

  • 案例
# 根据list⾥⾯进⾏分组,字符串⻓度⼤于4的为⼀组,其他为另外⼀组

public class Main {

    public static void main(String[] args) throws Exception {
        List<String> list = Arrays.asList("java", "springboot", "HTML5", "CSS3");
        Map<Boolean, List<String>> result = list.stream().collect(partitioningBy(obj -> obj.length() > 4));
        System.out.println(result);
    }
    
}

group by分组

  • 案例
# 根据学⽣所在的省份,进⾏分组

public class Main {

    public static void main(String[] args) throws Exception {
        List<Student> students = Arrays.asList(
                new Student("广东", 23), 
                new Student("广东", 24),
                new Student("广东", 23),
                new Student("北京", 22), 
                new Student("北京", 20),
                new Student("北京", 20), 
                new Student("海南", 25));

        // 根据province分组
        Map<String,List<Student>> listMap =  students.stream().collect(Collectors.groupingBy(obj->obj.getProvince()));

        listMap.forEach((key,value)->{
            System.out.println("=======");
            System.out.println(key);
            value.forEach(obj->{
                System.out.println(obj.getAge());
            });
        });
    }
    
}

// 内部类
class Student {
    
    private int age;

    private String province;
    
    public Student(String province, int age) {
        this.province = province;
        this.age = age;
    }

    public Student() {
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }
}

分组统计

  • 简介
聚合函数进⾏统计查询,分组后统计个数
Collectors.counting() 统计元素个数
  • 案例
# 统计各个省份的⼈数

public class Main {

    public static void main(String[] args) throws Exception {
        List<Student> students = Arrays.asList(
                new Student("广东", 23), 
                new Student("广东", 24),
                new Student("广东", 23),
                new Student("北京", 22), 
                new Student("北京", 20),
                new Student("北京", 20), 
                new Student("海南", 25));
        // 分组统计
         Map<String,Long> listMap =  students.stream().collect(Collectors.groupingBy(obj->obj.getProvince(),Collectors.counting()));
         listMap.forEach((key,value)->{
             System.out.println(key+"人数有"+value);
         });
    }

}

// 内部类
class Student {

    private int age;

    private String province;

    public Student(String province, int age) {
        this.province = province;
        this.age = age;
    }

    public Student() {
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }
}
posted @ 2022-08-25 13:31  DogLeftover  阅读(47)  评论(0编辑  收藏  举报