在Java中如何使用Collectors.summarizingInt统计整数属性_集合汇总统计方法解析

星杰酱_7622

星杰酱_7622

2025-11-27

1012人浏览

原创

Collectors.summarizingInt用于统计流中整数属性的汇总信息,返回IntSummaryStatistics对象,包含count、sum、min、max和average。通过ToIntFunction提取属性值,适用于学生年龄、商品价格等场景。示例中对Student列表按年龄统计,输出数量、总和、最值及均值。该方法避免多次遍历,提升效率,适合报表与数据分析。注意空流时min/max的默认值,且应确保使用int类型;long和double需用对应方法。结合方法引用如Student::getAge可增强代码可读性。

在java中如何使用collectors.summarizingint统计整数属性_集合汇总统计方法解析

在Java中,Collectors.summarizingInt 是一个非常实用的收集器,用于对流中的元素进行整数属性的汇总统计。它会返回一个 IntSummaryStatistics 对象,包含计数(count)、总和(sum)、最小值(min)、最大值(max)和平均值(average)等信息。

基本用法说明

该方法适用于从对象流中提取某个整数类型的属性,并生成该属性的统计摘要。常见场景包括统计用户年龄、商品价格、订单数量等。

语法结构如下:

Collectors.summarizingInt(ToIntFunction mapper)

其中 mapper 是一个函数式接口,用于将流中的每个元素转换为 int 值。

实际示例:统计学生年龄

假设有如下 Student 类:

class Student {
    private String name;
    private int age;

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

    // getter 方法
    public int getAge() { return age; }
}

现在创建一个学生列表并统计其年龄信息:

Java调试
Java调试

通过 JDWP 实现 Java 远程调试:连接远程 JVM、设置断点、单步执行代码、查看变量值、获取调用栈。适用于需要调试远程 Java 应用、排查运行时状态、追踪代码执行流程的场景。 术语注解 JDWP:Java Debug Wire Protocol,Java 调试有线协议(Java 远程调试底层通信协议) remote JVM:远程 Java 虚拟机 step through code:代码单步调试(步入 / 步过 / 步出调试) inspect variables:变量查看 / 变量检视 stac

下载
List students = Arrays.asList(
    new Student("Alice", 20),
    new Student("Bob", 22),
    new Student("Charlie", 21)
);

IntSummaryStatistics stats = students.stream()
    .collect(Collectors.summarizingInt(Student::getAge));

System.out.println("Count: " + stats.getCount());
System.out.println("Sum: " + stats.getSum());
System.out.println("Min: " + stats.getMin());
System.out.println("Max: " + stats.getMax());
System.out.println("Average: " + stats.getAverage());

输出结果为:

Count: 3
Sum: 63
Min: 20
Max: 22
Average: 21.0

IntSummaryStatistics 提供的方法

该对象封装了所有统计结果,常用方法包括:

  • getCount():返回元素个数
  • getSum():返回属性总和
  • getMin():返回最小值
  • getMax():返回最大值
  • getAverage():返回算术平均值(double 类型)

适用场景与注意事项

这个收集器适合需要同时获取多个统计指标的场景,避免多次遍历集合。比如报表生成、数据分析等。

注意点:

  • 如果流为空,min 和 max 的初始值分别为 Integer.MAX_VALUE 和 Integer.MIN_VALUE,使用时需判断 count 是否为 0
  • 仅适用于 int 类型属性;若处理 long 或 double,应使用 summarizingLong 或 summarizingDouble
  • 方法引用(如 Student::getAge)可简化代码,提高可读性

基本上就这些。合理使用 Collectors.summarizingInt 能让集合统计更简洁高效。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6939

3

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.20

3548

5

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6939

3

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.29

3325

6

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

2025.08.29

4348

10

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2025.08.29

2945

10

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

2025.08.29

4348

10

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

2025.10.23

824

4

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3208

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习