登录
首页 >  文章 >  java教程

JavaCollectors.summarizingLong用法详解

时间:2026-01-31 23:59:38 420浏览 收藏

今天golang学习网给大家带来了《Java中使用Collectors.summarizingLong统计Long数据详解》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

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 Collector summarizingLong(ToLongFunction mapper)

参数说明:

  • 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());
    }
}
</user>
输出结果:

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

4. 注意事项与适用场景

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

终于介绍完啦!小伙伴们,这篇关于《JavaCollectors.summarizingLong用法详解》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>