首页 > Java > java教程 > 正文

在Java中如何使用Collectors.summarizingLong统计Long类型_集合Long汇总操作解析

P粉602998670
发布: 2025-11-25 08:04:02
原创
988人浏览过
Collectors.summarizingLong用于统计集合中long值的汇总信息,返回LongSummaryStatistics对象,可获取数量、总和、最值及平均值。

在java中如何使用collectors.summarizinglong统计long类型_集合long汇总操作解析

在Java中,Collectors.summarizingLong 是一个非常实用的收集器,用于对集合中的元素进行统计操作,特别适用于需要获取最大值、最小值、总和、平均值以及元素数量等汇总信息的场景。它常与 Stream API 配合使用,返回一个 LongSummaryStatistics 对象,包含所有统计结果。

1. 基本语法与返回类型

Collectors.summarizingLong 接收一个函数式接口 ToLongFunction<T>,该接口用于从集合元素中提取出 long 类型的值。其基本语法如下:

stream.collect(Collectors.summarizingLong(ToLongFunction<T> mapper))

返回的是一个 LongSummaryStatistics 实例,可通过以下方法获取统计信息:

立即学习Java免费学习笔记(深入)”;

  • getCount():元素数量
  • getSum():总和
  • getMin():最小值(若无元素则返回 Long.MAX_VALUE)
  • getMax():最大值(若无元素则返回 Long.MIN_VALUE)
  • getAverage():平均值(空集合返回 0.0)

2. 统计 Long 类型集合的示例

假设有一个 List<Long>,我们想统计其中所有数值的汇总信息:

Unreal Images
Unreal Images

免费的AI图片库

Unreal Images 53
查看详情 Unreal Images

import java.util.*;
import java.util.stream.Collectors;

public class LongSummaryExample {
    public static void main(String[] args) {
        List<Long> numbers = Arrays.asList(10L, 20L, 30L, 40L, 50L);

        LongSummaryStatistics stats = numbers.stream()
            .collect(Collectors.summarizingLong(Long::longValue));

        System.out.println("总数: " + stats.getCount());
        System.out.println("总和: " + stats.getSum());
        System.out.println("最小值: " + stats.getMin());
        System.out.println("最大值: " + stats.getMax());
        System.out.println("平均值: " + stats.getAverage());
    }
}
登录后复制

输出结果为:

总数: 5
总和: 150
最小值: 10
最大值: 50
平均值: 30.0

3. 处理对象集合中的 Long 字段

更常见的用法是处理对象列表,例如统计用户年龄或订单金额等。假设有如下类:

class User {
    private String name;
    private long age;

    public User(String name, long age) {
        this.name = name;
        this.age = age;
    }

    public long getAge() {
        return age;
    }
    // getter 和 setter 省略
}
登录后复制

统计用户年龄的汇总信息:

List<User> users = Arrays.asList(
    new User("Alice", 25L),
    new User("Bob", 30L),
    new User("Charlie", 35L)
);

LongSummaryStatistics ageStats = users.stream()
    .collect(Collectors.summarizingLong(User::getAge));

System.out.println("用户数: " + ageStats.getCount());
System.out.println("总年龄: " + ageStats.getSum());
System.out.println("最年轻: " + ageStats.getMin());
System.out.println("最年长: " + ageStats.getMax());
System.out.println("平均年龄: " + ageStats.getAverage());
登录后复制

4. 注意事项与适用场景

使用 summarizingLong 时需注意以下几点:

  • 传入的函数必须返回 long 类型,不能是 null,否则会抛出 NullPointerException
  • 空集合不会抛异常,但 min/max 会有默认值,平均值为 0.0
  • 适合需要多项统计的场景,避免多次遍历集合计算 sum、max 等
  • 性能优于分别调用 mapToInt().sum()、max() 等多次终端操作

基本上就这些。这个收集器简洁高效,特别适合在数据聚合、报表生成等业务中使用。只要确保提取字段非 null,就能安全使用。

以上就是在Java中如何使用Collectors.summarizingLong统计Long类型_集合Long汇总操作解析的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号