Java8新特性JDK8之summarizing集合统计

Java新特性玩转JDK8之summarizing集合统计


summarizing 资料

  • summarizing 是用来做统计相关的东西
  • 分类(统计类型不同,使用方式相同
    • summarizingInt //统计int类型
    • summarizingLong //统计Long类型
    • summarizingDouble //统计Double类型
  • summarizingInt源码示例
public static <T> Collector<T, ?, IntSummaryStatistics> summarizingInt(ToIntFunction<? super T> mapper) { 
    return new CollectorImpl<T, IntSummaryStatistics, IntSummaryStatistics>(
		IntSummaryStatistics::new,
    	(r, t) -> r.accept(mapper.applyAsInt(t)),
    	(l, r) -> { l.combine(r); return l; }, CH_ID);
}

代码示例

  • 统计学生年龄总和、最大值、最小值、平均值、总人数
    • 学生类
public class Student {
    private String province;
    private int age;

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

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
  • 主函数
    • 可以看到经过收集器** summarizingInt收集后返回 IntSummaryStatistics** 对象,再由该对象取得统计后的值。
public class Main {
    public static void main(String[] args) {
        List<Student> students = Arrays.asList(new Student("广东", 23),
                                               new Student("广东", 24),
                                               new Student("广东", 23),
                                               new Student("北京", 22),
                                               new Student("北京", 20),
                                               new Student("北京", 20),
                                               new Student("海南", 25));

        IntSummaryStatistics summaryStatistics = students.stream().collect(Collectors.summarizingInt(Student::getAge));
        System.out.println("平均值:" + summaryStatistics.getAverage());//平均值:22.428571428571427
        System.out.println("人数:" + summaryStatistics.getCount());//人数:7
        System.out.println("最大值:" + summaryStatistics.getMax());//最大值:25
        System.out.println("最小值:" + summaryStatistics.getMin());//最小值:20
        System.out.println("总和:" + summaryStatistics.getSum());//总和:157
    }
}

原文地址:https://www.yuque.com/haomingzi-kowv5/pmcs3t/mk97lt

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDK 8引入了许多重要的高级特性。其中一些核心特性包括: - 高性能日期时间处理:JDK 8引入了新的日期时间API,使日期和时间的处理更加简便和高效。 - Lambda表达式:Lambda表达式是一种简洁的语法形式,用于表示匿名函数。它可以简化代码,并使函数式编程变得更加容易。 - 函数式接口:JDK 8中引入了java.util.function包,其中提供了许多函数式接口,例如Supplier、Consumer、Predicate等,用于支持函数式编程的特性。 - Stream流式处理:Stream是一种用于处理集合数据的新API。它可以实现高效的数据处理和转换,例如过滤、映射、排序等操作。 - Collector聚合统计:Collector是用于将流中的元素进行聚合操作的工具。它可以进行求和、求平均值、分组等操作。 这些高级特性使得Java编程更加简洁和灵活,能够更好地支持函数式编程风格和流式处理操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [19年全新JDK8~JDK13全套新特性视频教程java教程lambda函数式编程](https://download.csdn.net/download/weixin_26779013/19680803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【JavaSE之JDK8新特性】三万字详文带你了解JDK8新特性](https://blog.csdn.net/qq_63691275/article/details/127464579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值