Java8用Stream流一行代码实现数据分组统计,排序,最大值、最小值、平均值、总数、合计

news2024/11/16 15:47:44

Java8对数据处理可谓十分流畅,既不改变数据,又能对数据进行很好的处理,今天给大家演示下,用Java8的Stream如何对数据进行分组统计,排序,求和等

汇总统计方法

找到汇总统计的方法。这些方法属于java 8的汇总统计类。
getAverage(): 它返回所有接受值的平均值。
getCount(): 它计算所有元素的总数。
getMax(): 它返回最大值。
getMin(): 它返回最小值。
getSum(): 它返回所有元素的总和。

示例:统计用户status的最大值,最小值,求和,平均值

看官可以根据自己的需求进行灵活变通

    @GetMapping("/list")
    public void list(){
        List<InputForm> inputForms = inputFormMapper.selectList();
        Map<String, IntSummaryStatistics> collect = inputForms.stream()
            .collect(Collectors.groupingBy(InputForm::getCreateUserName, Collectors.summarizingInt(InputForm::getStatus)));

        // 对名字去重
        Set<String> collect1 = inputForms.stream().distinct().map(InputForm::getCreateUserName).collect(Collectors.toSet());

        // 遍历名字,从map中取出对应用户的status最大值,最小值,平均值。。。
        for (String s1 : collect1) {
            IntSummaryStatistics statistics1 = collect.get(s1);

            System.out.println("第一个用户的名字为====" + s1);
            System.out.println("**********************************************");
            System.out.println("status的个数为===" + statistics1.getCount());
            System.out.println("status的最小值为===" + statistics1.getMin());
            System.out.println("status的求和为===" + statistics1.getSum());
            System.out.println("status的平均值为===" + statistics1.getAverage());
            System.out.println();
            System.out.println();
        }
    }

  结果如下:

 

分组统计:

    @GetMapping("/list")
    public void list(){
        List<InputForm> inputForms = inputFormMapper.selectList();
        System.out.println("inputForms = " + inputForms);

        Map<String, Long> collect = inputForms.stream().collect(Collectors.groupingBy(InputForm::getCreateUserName,
            Collectors.counting()));
        
        System.out.println("collect = " + collect);
    }

其中Collectors.groupingBy(InputForm::getCreateUserName, Collectors.counting())返回的是一个Map集合,InputForm::getCreateUserName代表key,Collectors.counting()代表value,我是按照创建人的姓名进行统计

 

可以看到总共有九条数据,其中莫昀锦有两个,周亚丽有七个

如果我们想看某个部门下面有哪些数据,可以如下代码

    @GetMapping("/list")
    public Map<String, List<InputForm>> list(){
        List<InputForm> inputForms = inputFormMapper.selectList();
        System.out.println("inputForms = " + inputForms);

        Map<String, List<InputForm>> collect = inputForms.stream()
            .collect(Collectors.groupingBy(InputForm::getCreateCompanyName));

        return collect;
    }

 

 求最大值,最小值

    @GetMapping("/list")
    public Map<String, List<InputForm>> list(){
        List<InputForm> inputForms = inputFormMapper.selectList();
        System.out.println("inputForms = " + inputForms);

        Optional<InputForm> min = inputForms.stream()
            .min(Comparator.comparing(InputForm::getId));

        System.out.println("min = " + min);
        return null;
    }

可以看到此id是最小的,最大值雷同

对某个字段求最大,最小,求和,统计,计数

    @GetMapping("/list")
    public void list(){
        List<InputForm> inputForms = inputFormMapper.selectList();
        System.out.println("inputForms = " + inputForms);

        IntSummaryStatistics collect = inputForms.stream()
            .collect(Collectors.summarizingInt(InputForm::getStatus));
        double average = collect.getAverage();
        int max = collect.getMax();
        int min = collect.getMin();
        long sum = collect.getSum();
        long count = collect.getCount();
        
        System.out.println("collect = " + collect);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/56419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

wsl2如何安装systemctl命令,已成功!

打开powershell&#xff0c; 输入wsl 进入子系统(或者以你自己的方式进入子系统) apt install policykit-1 apt install build-essential apt install daemonize cd /tmp git clone http://github.com/bmc/daemonize.git cd daemonize sh configure make sudo make ins…

论文笔记:OpenPrompt: An Open-source Framework for Prompt-learning

论文来源&#xff1a;ACL2022 论文地址&#xff1a;https://aclanthology.org/2022.acl-demo.10.pdf 论文代码&#xff1a;https://github.com/thunlp/OpenPrompt 笔记仅供参考&#xff0c;撰写不易&#xff0c;请勿恶意转载抄袭&#xff01; Abstract 目前&#xff0c;还没…

Flink系列之Flink中Source_Transform_Sink整理和实战

title: Flink系列 二、Flink Source 整理和实战 Flink Source 是程序的数据源输入&#xff0c;可以通过 StreamExecutionEnvironment.addSource(sourceFunction) 来为你的程序添加一个 Source。 Flink 提供了大量的已经实现好的 source 方法&#xff0c;也可以自定义 source&…

译文 | A poor man‘s API

作者&#xff1a;Nicolas Frnkel 翻译&#xff1a;Sylvia https://blog.frankel.ch/poor-man-api/ 在 API 日渐流行的年代&#xff0c;越来越多的非技术人员也希望能从 API 的使用中获利&#xff0c;而创建一套成熟的 API 方案需要时间成本和金钱两方面的资源加持。在这个过程中…

2022re:Invent:亚马逊云科技拥有强大的云原生数据能力

在2022亚马逊云科技re:Invent全球大会上的第三天&#xff0c;Swami博士为大家带来了关于“数据与机器学习如何助力企业构建端到端的数据战略”的解读。亚马逊云科技拥有强大的云原生数据能力&#xff0c;用来帮助企业扩展其数据库和数据分析服务&#xff0c;并确保数据安全与数…

汽车电子电气架构演进驱动主机厂多重变化

已剪辑自: https://mp.weixin.qq.com/s/P56MaFODVc_eZ4JEOVJvfA 汽车电子电气架构&#xff08;EEA&#xff0c;Electrical/Electronic Architecture&#xff09;把汽车中的各类传感器、ECU&#xff08;电子控制单元&#xff09;、线束拓扑和电子电气分配系统整合在一起完成运算…

[附源码]计算机毕业设计JAVA校园求职与招聘系统

[附源码]计算机毕业设计JAVA校园求职与招聘系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM myba…

【Matplotlib绘制图像大全】(二十一):Matplotlib为绘图添加注释

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

Maven 的安装与配置

文章目录Maven 简介一&#xff0c;下载Maven二&#xff0c;安装Maven三&#xff0c;配置Maven环境变量Maven 简介 Maven 项目对象模型(POM)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之…

C/C++使用Windows的API实现共享内存以及同步

目录共享内存事件-Event实现思路创建方(服务端)连接方&#xff1a;进程同步&#xff1a;windows的APICreateFileMappingMapViewOfFileCreateEventWaitForSingleObjectCreateThreadOpenFileMapping通过共享内存实现进程间的交互服务端客户端结论共享内存 共享内存指 (shared me…

数据结构和算法之图的遍历

6.2 图的遍历 6.2.1 图的遍历——DFS 遍历&#xff1a;把图里面每个顶点都访问一遍而且不能有重复的访问 深度优先搜索(DFS) 当访问完了一个节点所有的灯后&#xff0c;一定原路返回对应着堆栈的出栈入栈的一个行为 深度优先搜索的算法描述 void DFS(Vertex V)//从迷宫…

Redis面试篇

文章目录1 Redis与Memcache的区别&#xff1f;2 Redis的单线程问题3 Redis的持久化方案由哪些&#xff1f;4 Redis的集群方式有哪些&#xff1f;5 Redis的常用数据类型有哪些&#xff1f;6 聊一下Redis事务机制7 Redis的Key过期策略参考资料&#xff1a;为什么需要内存回收&…

SpringBoot+ElasticSearch 实现模糊查询,批量CRUD,排序,分页,高亮!

一、导入elasticsearch依赖 在pom.xml里加入如下依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>非常重要&#xff1a;检查依赖版本是否…

【图像隐写】DWT数字水印嵌入+攻击+提取【含Matlab源码 1759期】

⛄一、DWT数字水印简介 1 引言 数字水印技术发展迅速&#xff0c;出现了各种水印算法&#xff0c;最低有效位(Least Significant Bit,LSB)数字水印技术是最早的空域水印添加算法&#xff0c;它原理简单且易实现&#xff0c;但鲁棒性差。变换域水印算法大大提高了水印的鲁棒性&…

【微信小程序】博客小程序,静态版本(三)设计和开发首页、个人关于页

【博客小程序】专栏 【微信小程序】博客小程序&#xff0c;静态版本&#xff08;一&#xff09;准备工作 【微信小程序】博客小程序&#xff0c;静态版本&#xff08;二&#xff09;引入 lin-ui 组件、设计和开发文章页 【微信小程序】博客小程序&#xff0c;静态版本&#…

模型推荐丨政务大数据项目案例模型分享

主要工具&#xff1a;Python 技术大类&#xff1a;自然语言处理 主要业务问题&#xff1a; 在社会治理上&#xff0c;政府部门一般通过群众的意见反馈、舆论情绪&#xff0c;掌握社会现状&#xff0c;做好舆情工作&#xff0c;以促进社会长治久安。微博作为有着大量活跃用户…

13 Igress,集群进出流量的总管

文章目录1. 前言2. 为什么要有 Ingress?2.1 Service 的缺点2.2 (Ingress)怎么解决Service 的缺点&#xff1f;3. 为什么要有 Ingress Controller 和 IngressClass?3.1 为什么要有 Ingress Controller&#xff1f;3.1.1 Ingress Controller3.1.1 Ingress Controller 常见公司3…

深入学习Linux内核(二)体系结构简析

Linux内核体系结构简析 图1 Linux系统层次结构 最上面是用户&#xff08;或应用程序&#xff09;空间。这是用户应用程序执行的地方。用户空间之下是内核空间&#xff0c;Linux 内核正是位于这里。GNU C Library &#xff08;glibc&#xff09;也在这里。它提供了连接内核的系…

Jitter

1、Jitter定义 定义1&#xff08;SONET规范&#xff09; 抖动可以定义为数字信号在重要时点上偏离理想时间位置的短期变化。 Long term jitter 测量由参考点滞后相当数量的Cycle&#xff08;500~1000&#xff09;后时钟的抖动值。该抖动参数也是时钟稳定性的一个重要指标&a…

如何清除电脑缓存?让电脑运行速度提升的有效方法

随着时间的流逝&#xff0c;电脑保存太多缓存文件&#xff0c;电脑的运行速度会越来越慢&#xff0c;甚至无法启动。当出现这种情况时&#xff0c;我们就需要对电脑进行清理。那么如何清除电脑缓存&#xff1f;今天就来给大家分享几个方法&#xff0c;让你的电脑运行速度快起来…