首页 > 编程语言 >Java 通过collectors.groupingBy根据某个字段统计

Java 通过collectors.groupingBy根据某个字段统计

时间:2023-10-31 15:00:58浏览次数:34  
标签:25 Java groupingBy Collectors age collectors Person new

要使用Collectors.groupingBy根据某个字段统计,你可以通过提供一个函数来指定分组的条件。

假设你有一个包含Person对象的列表,每个对象都有age字段表示年龄,你想要根据年龄分组,并统计每个年龄组的人数。以下是一个使用Collectors.groupingBy的示例代码:

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
                new Person("Alice", 25),
                new Person("Bob", 30),
                new Person("Charlie", 25),
                new Person("David", 30),
                new Person("Eve", 25)
        );

        Map<Integer, Long> countByAge = people.stream()
                .collect(Collectors.groupingBy(
                        Person::getAge,
                        Collectors.counting()
                ));

        System.out.println(countByAge);
    }
}

class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

在上面的代码中,我们通过使用Collectors.groupingBy将人员列表按照年龄进行分组。我们传递了一个方法引用Person::getAge作为分组的条件。然后,我们使用Collectors.counting()收集器来统计每个年龄组的人数。

运行上述代码,你将得到以下输出:

{25=3, 30=2}

这表示在给定的人员列表中,年龄为25的组有3个人,年龄为30的组有2个人。

标签:25,Java,groupingBy,Collectors,age,collectors,Person,new
From: https://www.cnblogs.com/Twittery/p/17800249.html

相关文章

  • File --JAVA
    File--JAVA构造方法方法说明publicFile(Stringpathname)根据文件路径创建对象publicFile(Stringparent,Stringchild)根据父路径名字字符串和子路径名字符串创建文件对象publicFile(Stringparent,Stringchild)根据父路径对应文件对象和子路径名字符......
  • java mysql druid mybatis-plus里使用多表删除出错的一种处理方式
    今天在出来多表删除的时候在mapper.xml用了下面的多个delete语句<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespa......
  • -bash: java: command not found笔记
    文章目录场景解决方案找java的方法find命令进行查找根据java进程找寻具体位置场景linux系统执行java命令时报错:-bash:java:commandnotfound。解决方案可能是没有安装java(这种情况比较少)或者安装了java但是没有设置环境变量(一般是这种情况)。找java的方法find命令进行查找......
  • 【面试专题】Java核心基础篇②
    目录1.接口和抽象类有什么区别?2.两个对象的hashCode()相同,则equals()也一定为true,对吗?3.说一说hashCode()和equals()的关系4.为什么要重写hashCode()和equals()?5.==和equals()有什么区别?6.简单聊聊什么是深拷贝?什么是浅拷贝?7.简单讲讲你对Java中的异常的理解?8.遇到过异常吗,如......
  • java根据模板生成表格和列表
    1、模板所有的标签都是以{{开始,以}}结束。{{template}}文本{{@template}}图片{{#template}}表格{{*template}}列表{{+template}}Word文档合并{{?template}}{{/template}}if和foreach功能 2、引入包<!--POI依赖使用xlsxxml的格式(即X......
  • Java 使用`Collectors.groupingBy`计算百分比
    要使用Collectors.groupingBy计算百分比,你需要先对数据进行分组,然后计算每个组内元素的百分比。假设你有一个包含整数的列表,你想要按照它们的奇偶性进行分组,并计算每个组内元素的百分比。以下是一个使用Collectors.groupingBy和自定义收集器的示例代码:importjava.util.Arrays;......
  • java实现文件夹上传功能实例代码(SpringBoot框架)
    前言有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功能,具体操作步骤如下一、前端如何设置上传组件并将资源上传到后台服务这里的项目框架为若依VUE版本......
  • java8 集合操作功能
    Java8引入了许多新的集合操作功能,包括但不限于以下几项:forEach:使用Lambda表达式遍历集合中的每个元素。stream:将集合转换为流,以便进行各种操作,如过滤、映射、排序等。filter:根据指定的条件过滤集合中的元素,并返回过滤后的结果。map:将集合中的每个元素映射为另一个元素,并返回......
  • 【面试题】详解JavaScript中的Map()
    JavaScript中的Map()JavaScript是一种动态、解释性的编程语言,用于开发web上的动态页面和交互式应用程序。与其他编程语言相比,JavaScript拥有更加灵活的内置数据类型,并且拥有更高级别的调试和错误处理工具。JavaScript的核心特征之一就是其内置的Map()数据结构,本文将详细介绍JavaScr......
  • 超市账单管理系统 JAVA开源项目 毕业设计
    一、摘要基于JAVA+Vue+SpringBoot+MySQL的超市账单管理系统,包含供应商模块、商品管理模块、超市账单模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,超市账单管理系统基于角色的访问控制,给超市管理员、店长使......