首页 > Java > java教程 > 正文

Java里如何使用Collectors.summarizingLong统计Long数据_Long数据汇总方法说明

P粉602998670
发布: 2025-11-30 12:15:06
原创
126人浏览过
Collectors.summarizingLong用于提取流中元素的long值并生成包含计数、总和、最值和平均值的LongSummaryStatistics对象,适用于需一次性获取多项统计指标的场景。

java里如何使用collectors.summarizinglong统计long数据_long数据汇总方法说明

在Java中,Collectors.summarizingLongjava.util.stream.Collectors 类提供的一个归约操作方法,用于对流中的元素提取 long 值并生成一个 LongSummaryStatistics 对象。这个对象包含了统计信息:计数(count)、总和(sum)、最小值(min)、最大值(max)和平均值(average)。

1. 方法基本语法

该方法的定义如下:

public static <T> Collector<T, ?, LongSummaryStatistics> summarizingLong(ToLongFunction<? super T> mapper)

Natural Language Playlist
Natural Language Playlist

探索语言和音乐之间丰富而复杂的关系,并使用 Transformer 语言模型构建播放列表。

Natural Language Playlist 67
查看详情 Natural Language Playlist

参数说明:

  • mapper:是一个函数式接口 ToLongFunction,用于从流中的每个元素提取一个 long 值。

2. 返回结果:LongSummaryStatistics

调用 summarizingLong 后会返回一个 LongSummaryStatistics 实例,它提供以下方法获取统计值:
  • getCount():元素数量
  • getSum():所有值的总和
  • getMin():最小值(若无元素,默认为 Long.MAX_VALUE)
  • getMax():最大值(若无元素,默认为 Long.MIN_VALUE)
  • getAverage():平均值(若无元素,默认为 0.0)

3. 使用示例

假设有一个用户列表,每个用户有年龄字段(用 long 表示),我们想统计这些用户的年龄汇总信息:

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

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 省略
}

public class Main {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(
            new User("Alice", 30),
            new User("Bob", 25),
            new User("Charlie", 35),
            new User("Diana", 28)
        );

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

        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());
    }
}
登录后复制

输出结果:

总人数: 4
总年龄: 118
最小年龄: 25
最大年龄: 35
平均年龄: 29.5

4. 注意事项与适用场景

  • 适用于需要一次性获取多个统计指标的场景,避免多次遍历流。
  • 输入流为空时,count 为 0,sum 为 0,minLong.MAX_VALUEmaxLong.MIN_VALUEaverage 为 0.0 —— 使用时注意判断是否为空。
  • 性能优于分别使用 sum()max() 等单独计算多次。
基本上就这些。这个方法简洁高效,适合处理需要综合统计 long 类型数据的业务逻辑。

以上就是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号