Java 8中的Stream API:如何使用Collectors类进行集合的分组和统计

2023年 8月 28日 79.9k 0

Java 8中的Stream API:如何使用Collectors类进行集合的分组和统计

引言:在Java 8中,引入了Stream API,这是一种函数式编程的概念,可以让我们以一种更简洁和优雅的方式处理集合数据。Stream API提供了丰富的功能,其中之一就是对集合进行分组和统计。本文将介绍如何使用Collectors类来实现这一功能。

  • 集合的分组在实际的开发中,我们经常需要根据某个属性对集合进行分组,以便于进行后续的处理。在Java 8中,可以使用Collectors类的groupBy()方法来实现集合的分组。
  • 示例代码如下:

    class Person {
    private String name;
    private String gender;
    private int age;

    public Person(String name, String gender, int age) {
    this.name = name;
    this.gender = gender;
    this.age = age;
    }

    public String getName() {
    return name;
    }

    public String getGender() {
    return gender;
    }

    public int getAge() {
    return age;
    }
    }

    List persons = Arrays.asList(
    new Person("John", "male", 20),
    new Person("Jane", "female", 25),
    new Person("Tom", "male", 30),
    new Person("Emily", "female", 35)
    );

    Map groupedByGender = persons.stream()
    .collect(Collectors.groupingBy(Person::getGender));

    System.out.println(groupedByGender);

    登录后复制

    输出结果为:

    {female=[Person{name='Jane', gender='female', age=25}, Person{name='Emily', gender='female', age=35}], male=[Person{name='John', gender='male', age=20}, Person{name='Tom', gender='male', age=30}]}

    登录后复制

    上述代码中,我们首先创建了一个Person类作为示例,其中包含name、gender和age属性。然后创建了一个Person对象的List集合。接下来,通过stream()方法将该集合转换为流。最后,使用Collectors类的groupBy()方法,根据Person对象的gender属性进行分组,结果保存在一个Map集合中。

  • 集合的统计在实践中,我们可能需要对集合中的元素进行统计,例如计算元素的个数、求和、求平均值等。Java 8的Stream API提供了一系列的统计方法,我们可以使用Collectors类的summingInt()、averagingInt()、counting()等方法来实现。
  • 示例代码如下:

    List numbers = Arrays.asList(1, 2, 3, 4, 5);

    int sum = numbers.stream().collect(Collectors.summingInt(Integer::intValue));
    double average = numbers.stream().collect(Collectors.averagingInt(Integer::intValue));
    long count = numbers.stream().collect(Collectors.counting());

    System.out.println("Sum: " + sum);
    System.out.println("Average: " + average);
    System.out.println("Count: " + count);

    登录后复制

    输出结果为:

    Sum: 15
    Average: 3.0
    Count: 5

    登录后复制

    上述代码中,我们首先创建了一个Integer类型的List,其中包含了一系列的数字。接下来,通过summingInt()方法求和,averagingInt()方法求平均值,counting()方法计算个数。最后,通过Collectors类的collect()方法获取结果。

    总结:通过Java 8中的Stream API和Collectors类,我们可以以更简洁和优雅的方式对集合进行分组和统计操作。这一特性不仅提高了代码的可读性,还极大地增强了程序的灵活性。

    以上就是本文对Java 8中的Stream API和Collectors类进行集合分组和统计的介绍,希望对您有所帮助。谢谢!

    以上就是Java 8中的Stream API:如何使用Collectors类进行集合的分组和统计的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论