Java8-转为流为基本数据类型求最大值、最小值、平均值、求和、计数

Stream Collectors.groupingBy的四种用法 解决分组统计(计数、求和、平均数等)、范围统计、分组合并、分组结果自定义映射等问题 基于Java8介绍Java stream Collectors.groupingBy 功能 使用 方法,对java Collectors.groupingBy()的可用方法进行一一举例介绍,如stream分组 stream分组计数 stream分组求和 stream分组聚合等,基于stream collect() 和 收集器 Collectors 阅读详情

基本数据类型在高阶函数中的运用

众所周知,在Java中使用基本数据类型的性能和产效率远高于包装类型。由于装箱类型是对象,因此在内存中存在额外开销。比如,整型在内存中占用4 字节,整型对象却要占用 16 字节。这一情况在数组上更加严重,整型数组中的每个元素只占用基本类型的内存,而整型对象数组中,每个元素都是内存中的一个指针,指向 Java堆中的某个对象。在最坏的情况下,同样大小的数组, Integer[] 要比 int[] 多占用 6 倍内存。

将基本类型转换为装箱类型,称为装箱,反之则称为拆箱,两者都需要额外的计算开销。对于需要大量数值运算的算法来说,装箱和拆箱的计算开销,以及装箱类型占用的额外内存,会明显减缓程序的运行速度。

为了减小这些性能开销, Stream 类的某些方法对基本类型和装箱类型做了区分。Stream中的高阶函数 mapToLong 和其他类似函数即为该方面的一个尝试。在 Java 8 中,仅对整型、长整型和双浮点型做了特殊处理,因为它们在数值计算中用得最多,特殊处理后的系统性能提升效果最明显。


计算最大值、最小值、平均值、求和、计数统计

使用 mapToInt、mapToLong、mapToDouble 等高阶函数后,得到一个基于基本数据类型的流。针对这样的流,Java提供了一个摘要统计的功能(对应的类有:IntSummaryStatistics、LongSummaryStatistics 和 DoubleSummaryStatistics),如下代码所示:

/**
 * 运行入口
 *
 * @param args 运行参数
 */
public static void main(String[] args) {
    toInt();
    toLong();
    toDouble();
}

private static void toInt() {
    IntSummaryStatistics statistics = Stream.of(1L, 2L, 3L, 4L).mapToInt(Long::intValue).summaryStatistics();
    System.out.println("最大值:" + statistics.getMax());
    System.out.println("最小值:" + statistics.getMin());
    System.out.println("平均值:" + statistics.getAverage());
    System.out.println("求和:" + statistics.getSum());
    System.out.println("计数:" + statistics.getCount());
}

private static void toLong() {
    LongSummaryStatistics statistics = Stream.of(1L, 2L, 3L, 4000000000000000000L).mapToLong(Long::longValue).summaryStatistics();
    System.out.println("最大值:" + statistics.getMax());
    System.out.println("最小值:" + statistics.getMin());
    System.out.println("平均值:" + statistics.getAverage());
    System.out.println("求和:" + statistics.getSum());
    System.out.println("计数:" + statistics.getCount());
}

private static void toDouble() {
    DoubleSummaryStatistics statistics = Stream.of(1, 2, 3.0, 5.2).mapToDouble(Number::doubleValue).summaryStatistics();
    System.out.println("最大值:" + statistics.getMax());
    System.out.println("最小值:" + statistics.getMin());
    System.out.println("平均值:" + statistics.getAverage());
    System.out.println("求和:" + statistics.getSum());
    System.out.println("计数:" + statistics.getCount());
}

 

本文原文地址:https://blog.youkuaiyun.com/zebe1989/article/details/82692527

Java 获取控制台输入的整数并输出最大值和最小值 自己做的小东西,可能有未完善的地方;有错请喷!Java 获取控制台输入的整数并输出最大值和最小值。 立即下载

相关推荐

Java实现取三个float的最大数最小数及平均数

利用JCREATOR软件实现取三个float中的最大数最小数及平均数,利用swing用弹出窗口的形式实现。

Java8中Stream流求最大值最小值

【代码】Java8中Stream流求最大值最小值。

qq_43842093的博客 2万+

Android开发- (2)MediaProjection API实战:构建高效屏幕共享与远程控制方案

本文深入探讨了Android开发中利用MediaProjection API实现高效屏幕共享与远程控制方案的实战方法。文章从权限申请、虚拟屏幕创建讲起,详细解析了图像捕获、编码压缩、Socket网络传输的核心流程,并进一步介绍了如何构建双向控制通道及关键的性能优化与避坑指南,为开发者构建稳定可用的远程协作应用提供了完整路径。

weixin_29207533的博客 450

若干个数 以“字符串形式‘从键盘输入,将其转换为 double 型,并求平均数

/* 若干个数 以“字符串形式‘从键盘输入,将其转换为 double 型,并求平均数 */ import java.util.Scanner; public class Test_Exp1 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.print(

六月心悸 1433

Nacos启动报错No DataSource set?5分钟搞定standalone模式配置

本文针对Nacos启动时常见的“No DataSource set”报错,深入解析了其根源在于默认集群模式与外部数据库依赖。提供了两种快速解决方案:通过命令行参数“-m standalone”启动,或直接修改启动脚本配置文件,从而在5分钟内以单机模式成功启动Nacos,无需配置MySQL数据库。

weixin_29234509的博客 465

理解ADC:为什么需要抗混叠滤波器?

本文介绍 ADC 的混叠现象,引出抗混叠滤波器,并介绍一种开关电容滤波器,它具有很小的增益过渡带。

疯狂的运放 5938

输入8个整数,输出,找最大数和最小数,分别与第一个和最后一个元素交换。

找最大数和最小数,分别与第一个和最后一个元素交换 注意循环中的数值交换找最大数和最小数,分别与第一个和最后一个元素交换 运行结果 程序代码 #include<stdio.h> int E(int w[8]); int E(int w[8]) { int i,min,max,t; min=0; for(i=0;i<8;i++) if(w[i]<w[min]) min=i; t=w[0];w[0]=w[min];w[min]=t; for(i=0;i<

程序员Renming 3659

【计算机科学导论实验】加法图灵机模拟 题解

本文提供计算机科学导论课程“图灵机加法器”实验的个人思路,仅供参考。

Chavapa's blog 2576

用Java编写程序求数组中元素的最大值,最小值,平均值,总和

求数组中元素的最大值,最小值,平均值,最小值

hhm51she3271314的博客 9487

ESP32-P4开发板实战:从零配置VSCode环境到点亮MIPI-DSI屏幕(避坑指南)

本文详细介绍了ESP32-P4开发板在VSCode环境下的配置流程,包括SDK安装、idf_component.yml依赖管理,以及MIPI-DSI屏幕驱动的实现方法。通过实战指南帮助开发者避开常见配置陷阱,快速完成从环境搭建到屏幕点亮的全流程,适用于物联网和嵌入式开发场景。

pp12345的博客 741

五.EtherCAT开发之STM32F407ZGt6+ LAN9253 外置EEPROM配置数据含义

EtherCAT从站简称ESC,ESC在上电过程中,会自动加载EEPROM中前7个字(1word = 2 byte)到ESC寄存器。ESC寄存器总是可以被EtherCAT主站通过EtherCAT总线访问,无论PDI接口寄存器配置什么值。EEPROM存储器中的前7个字,将决定ESC的工作模式。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 3466

Java8 List统计(最大值,最小值、平均值、总和)

核心功能代码: Integer sum = list.stream().mapToInt(User::getAge).sum(); System.out.println("年龄总和:" +sum); Integer max = list.stream().mapToInt(User::getAge).max().orElse(0); System.out.println("年龄 最大:" + max); Integer mi

zhouzhiwengang的专栏 1万+

智能能效管家:基于 ESP32 的智能插座设计与精细化功耗管理实现

针对传统插座无法远程控制、功耗监测缺失、能源浪费严重等问题,本文设计一款基于 ESP32 主控芯片的智能插座。该系统集成 WiFi 无线通信、交流功耗采集、继电器通断控制模块,实现四大核心功能。硬件采用模块化选型与安全接线设计,软件基于 Arduino-ESP32 框架开发,搭载 Mqtt 通信协议与功耗算法,可通过手机 / 云端实时管控设备,有效提升用电安全性与能源利用率。:ESP32;智能插座;功耗管理;远程控制;能耗监测。

weixin_42300449的博客 101

超详细的Java8 Stream使用方法:筛选、排序、最大值、最小值、计数求和平均数、分组、合并、映射、去重等

Stream流式操作的常用使用方法 关于函数编程的原理可以参考:Java 8函数式编程#Lambda表达式#方法引用 超详细的Java8 Stream使用方法:筛选、排序、最大值、最小值、计数求和平均数、分组、合并、映射等 涉及Stream中的如下方法:stream()、filter、peek、map、collect、Collectors.toList()、skip、limit、sorted、max、min、distinct、reduce、sum、average、Collectors.groupingBy

HO1_K的博客 2万+

高通MBIM拨号流程简述

高通平台MBIM流程简述

不秃头的程序猿Gabriel的博客 5070

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

Java8对数据处理可谓十分流畅,既不改变数据,又能对数据进行很好的处理,今天给大家演示下,用Java8的Stream如何对数据进行分组统计,排序,求和等汇总统计方法找到汇总统计的方法。这些方法属于java 8的汇总统计类。getAverage(): 它返回所有接受值的平均值。getCount(): 它计算所有元素的总数。getMax(): 它返回最大值。getMin(): 它返回最小值。getSum(): 它返回所有元素的总和。看官可以根据自己的需求进行灵活变通。

xiaoheihai666的博客 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

记录java8中关于list求和,最大值,最小值以及json中字段空值的个数

java更新换代很快,目前是多少也没有关注,只是连java8还没有完全搞明白,都说java8可以省不少事,今天就记录一下。 1.最小值 //方式一 Optional<Double> min = 列表list.stream().min(Comparator.comparing(Function.identity())); //方式二 list.stream().mapToDoub...

千羽公子的专栏 1802

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java对集合中的元素求平均值_java8实现list集合中按照某一个值相加求和,平均值等操作代码...

集合:Listuser = new User();user .stream().collect(Collectors.summingInt(User::getAge))参数类型:summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值summarizingInt 统计数据(int)状态, 其中包括count min max sum和平均...

weixin_29149931的博客 3660

Java8 新特性 使用lambda表达式对map集合求和,或平均值、最大值、最小值

一、lambda方法,如下: IntSummaryStatistics statistics= (IntSummaryStatistics) list .stream() .collect( Collectors.summarizingInt( e->Integer.valueOf( ((Map) e).get("xxx Key对象").toString() ))); 具体方法:我们用以上得到的结果 .get,如下图,可以直接获取集合的和,或

JavaWebEngineer的博客 5567

【Java 8 新特性】Java 8 汇总统计示例 | 最大值、最小值、平均值、总数、合计

Java 8 汇总统计示例 | 最大值、最小值、平均值、总数、合计汇总统计方法DoubleSummaryStatistics 和 Collectors.summarizingDouble()IntSummaryStatistics 和 Collectors.summarizingInt()LongSummaryStatistics 和 Collectors.summarizingLong()基本数据类型的汇总统计示例对象的汇总统计示例参考文献 在这个页面上,我们将提供java 8汇总统计的例子。 我们可以一

猫巳的博客 6054

java集合的某项相加_java8实现list集合中按照某一个值相加求和,平均值等操作代码...

集合:List user = new User();user .stream().collect(Collectors.summingInt(User::getAge))参数类型:summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值summarizingInt 统计数据(int)状态, 其中包括count min max sum和平...

weixin_42131342的博客 5021

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

其中Collectors.groupingBy(InputForm::getCreateUserName, Collectors.counting())返回的是一个Map集合,InputForm::getCreateUserName代表key,Collectors.counting()代表value,我是按照创建人的姓名进行统计。Java8对数据处理可谓十分流畅,既不改变数据,又能对数据进行很好的处理,今天给大家演示下,用Java8的Stream如何对数据进行分组统计,排序,求和等。对某个字段求和并汇总。

程序员高级码农的博客 1112

java8实现list集合中按照某一个值相加求和,平均值等操作

集合: List<User> user = new User(); user .stream().collect(Collectors.summingInt(User::getAge)) 参数类型: summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值 summarizingInt 统计数据(int)状态, 其中包括c...

F_Z_S的博客 1万+

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

示例:统计用户status的最大值,最小值,求和,平均值分组统计:如果我们想看某个部门下面有哪些数据,可以如下代码求最大值,最小值对某个字段求最大,最小,求和,统计,计数求最大值,最小值还可以这样做对某个字段求和并汇总求某个字段的平均值拼接某个字段的值,可以设置前缀,后缀或者分隔符根据部门进行分组,并获取汇总人数根据部门和是否退休进行分组,并汇总人数根据部门和是否退休进行分组,并取得每组中年龄最大...

Java精选 1669
上一篇: Java8-ThreadLocal的Lambda构造方式:withInitial
下一篇: “撒旦”勒索病毒再曝4.2变种 腾讯电脑管家文档守护者可一招解密
Roger_CoderLife
博客等级 码龄9年 211粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值