Java8 Stream 分组求和使用笔记

2023-10-29

Java8 Stream 分组求和使用笔记

话不多说,直接贴代码,分组使用

class Foo {
    private int code;

    private int count;

    public Foo(int code, int count) {
        this.code = code;
        this.count = count;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}
public static void main(String[] args) {
        Foo foo1 = new Foo(1, 2);
        Foo foo2 = new Foo(2, 23);
        Foo foo3 = new Foo(2, 6);
        List<Foo> list = new ArrayList<>(4);
        list.add(foo1);
        list.add(foo2);
        list.add(foo3);
        Map<Integer, List<Foo>> collect = list.stream().collect(Collectors.groupingBy(Foo::getCode));
        List<Foo> list1 = collect.get(1);
        List<Foo> list2 = collect.get(2);
        list1.forEach(e -> System.out.println(e.getCode() + ":" + e.getCount()));
        System.out.println("-----------这里是分界线-----------------------------");
        list2.forEach(e -> System.out.println(e.getCode() + ":" + e.getCount()));
    }

输出结果:

1:2
-----------这里是分界线-----------------------------
2:23
2:6

分组求和使用

public static void main(String[] args) {
        Foo foo1 = new Foo(1, 2);
        Foo foo2 = new Foo(2, 23);
        Foo foo3 = new Foo(2, 6);
        List<Foo> list = new ArrayList<>(4);
        list.add(foo1);
        list.add(foo2);
        list.add(foo3);
        Map<Integer, IntSummaryStatistics> collect = list.stream().collect(Collectors.groupingBy(Foo::getCode, Collectors.summarizingInt(Foo::getCount)));
        IntSummaryStatistics statistics1 = collect.get(1);
        IntSummaryStatistics statistics2 = collect.get(2);
        System.out.println(statistics1.getSum());
        System.out.println(statistics1.getAverage());
        System.out.println(statistics1.getMax());
        System.out.println(statistics1.getMin());
        System.out.println(statistics1.getCount());

        System.out.println(statistics2.getSum());
        System.out.println(statistics2.getAverage());
        System.out.println(statistics2.getMax());
        System.out.println(statistics2.getMin());
        System.out.println(statistics2.getCount());
    }

输出结果:

2
2.0
2
2
1
29
14.5
23
6
2

stream真的是相当的好用,Mark一下,欢迎大神在评论区留下你的Stream骚操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java8 Stream 分组求和使用笔记 的相关文章

随机推荐

  • viewer图片预览插件

    参考github文档https github com fengyuanchen viewerjs options 1 下载插件 2 引入插件 3 参数1 图片外div的dom对象 参数2 预览插件配置项 new Viewer documen
  • PyQt学习笔记:如何调整QTableView中行高和列宽

    PyQt学习笔记 如何调整QTableView中行高和列宽 在使用PyQt制作数据呈现界面时 QTableView是一个常用的组件 但是默认情况下 QTableView的行高和列宽可能不太适合实际需求 需要我们进行调整 本文将介绍如何在QT
  • el-form表单循环验证

  • 【ES实战】索引模板template使用说明

    文章目录 索引模板 模板的管理 创建 修改模板 多模板应用 查询模板 删除模板 版本化模板 索引模板 模板的主要作用 可以帮助简化创建索引的语句 将模板中的配置和映射应用到创建的索引中 新建索引时 索引名称满足index patterns条
  • 如何在工作中快速成长?致工程师的 10 个简单技巧

    作者 江建明 阿里巴巴高级无线开发专家 导读 精英人数的增长速度持续加快后 很多人开始焦虑 我也焦虑 深知要走出焦虑不容易 我想把走出焦虑快速成长的认知和方法写成文章分享给更多人 做成 技术人成长系列 文章给更多人面对面分享 该系列总共三篇
  • MySQl之最全且必会的sql语句

    原文链接 http blog csdn net qq 32059827 article details 51763950 创建一个名称为mydb1的数据库 如果有mydb1数据库则直接使用 如果无则创建mydb1数据库 create dat
  • UE4蓝图 传送带效果

    UE4蓝图 传送带效果 UE4蓝图 传送带效果 关于预览效果 步骤 注意 StaticMesh的Collisin属性中 去 Generte Overlap Events
  • 嵌入式数据结构(单链表)

    嵌入式学习第七天 1 链式存储相较于顺序存储优势 1 内存连续性要求没那么高 2 插入或者删除不用大量 移位操作 2 3 4 link list get wz link q int i link p p q int j 0 if p NUL
  • python中调用linux命令及os.system的返回值

    使用os system cmd 即可在python中使用linux命令 示例 在aa文件夹下创建了bb cc两个文件夹 并且用ls展示出来 coding utf 8 import os path root Download dir path
  • 强大的JTAG边界扫描(3):常用边界扫描测试软件

    文章目录 1 功能强大的XJTAG 2 小巧简洁的TopJTAG 3 TopJTAG安装 4 TopJTAG基本使用 本文介绍两款常用的边界扫描测试软件 XJTAG和TopJTAG 前者收费 功能强大 后者免费 和谐后 功能简洁 如果只是要
  • NVIDIA显卡(GPU)性能参数一览表

    本贴列举了NVIDIA29款主流显卡 GPU 的性能参数及价格 供大家在选购时参考 若有错误 也请指正 NVIDIA 显卡性能参数一览表 英伟达官网原话 建议消费者认准 NVIDIA 在中国大陆地区的合作伙伴购买 华硕 七彩虹 耕升 影驰
  • js 正则处理名字 只显示首和尾,中间用三个星号替代

    测试字符串 replace 1 2
  • [计算机网络期末复习_例题]曼彻斯特与差分曼彻斯特

    如图 这是个8bit数据的曼彻斯特编码波形 前T 2传送该比特的反码 我知道画的很丑 求放过 1 请写出这个8bit数据的二进制编码 2 请画出相对应的差分曼彻斯特编码波形 曼彻斯特编码0是由上往下的 而1是由下往上的 解 1 由上面的图可
  • 原生Js Canvas去除视频绿幕背景

    Js去除视频背景 注 这里的去除视频背景并不是对视频文件进行操作去除背景 如果需要对视频扣除背景并导出可以使用ffmpeg等库 这里仅作播放用所以采用这种方法 由于uniapp中的canvas经过封装 且 uniapp 的 drawImag
  • 初始化和未初始化的全局变量

    一 初始化的全局变量存放在数据段 data segment 数据段数据静态分配 二 未初始化的全局变量存放在bss段 BSS是英文Block Started by Symbol的简称 BSS段属于静态内存分配 未初始化 这一说法其实并不准确
  • webm转换成mp4格式的几种方法详细介绍

    webm转换成mp4格式怎么转 WebM是一种支持高清视频和音频媒体的开放式多媒体格式 与VP8和VP9编解码器配合使用 具有良好的压缩性能和高质量的音视频效果 但是 在实际应用过程中 有些设备和软件不支持WebM格式 因此需要将WebM格
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • pointCloudsLibrary视频资料

    pointCloudsLibrary视频资料 版权 边缘疯狂试探 https www bilibili com video BV1JV411C7f3 前言 目前pointCloudsLibrary的资料很少 只有官网的文档 下面介绍一个点云
  • CTF的区块链入门资料

    文章目录 编写课件的心路历程 第一阶段 第二阶段 题目列表 靶场Security Innovation Blockchain CTF 合约逆向 其他 常用平台 区块链安全公司相关 编写课件的心路历程 第一阶段 查找半个小时 发现CTF区块链
  • Java8 Stream 分组求和使用笔记

    Java8 Stream 分组求和使用笔记 话不多说 直接贴代码 分组使用 class Foo private int code private int count public Foo int code int count this co