DoubleSummaryStatistics 及其相关类之-简介
1. DoubleSummaryStatistics 使用简介
在Java 8中,DoubleSummaryStatistics
类被引入作为 java.util
包的一部分。它是一个用于收集统计数据(如计数、最小值、最大值、和、平均值等)的类,特别适用于处理 double
类型的数据。
DoubleSummaryStatistics
是一个用于统计 double
值数据的类,能够同时计算出以下几个统计数据:
- 总数(count)
- 总和(sum)
- 最小值(min)
- 最大值(max)
- 平均值(average)
它提供了一组方法用于更新和检索这些统计数据,并且与 Java 8 中的 Stream API 无缝集成。
2. 使用场景和优缺点
a. 使用场景
- 数据分析:在处理大量
double
类型数据时,使用DoubleSummaryStatistics
可以轻松获取关键统计数据。 - 数据流处理:与 Stream API 结合使用,简化统计操作。
- 实时统计:在需要不断更新统计数据的实时系统中,
DoubleSummaryStatistics
提供了便捷的方式。
b. 优点
- 简洁性:简化了统计数据的计算,避免手动编写累加器。
- 性能:适用于大数据集的处理,结合并行流使用时具有良好的性能。
- 易用性:提供了开箱即用的方法来获取统计数据。
c. 缺点
- 单一用途:主要用于
double
类型数据的统计,其他类型数据需要使用对应的类,如IntSummaryStatistics
和LongSummaryStatistics
。 - 内存占用:在处理极大数据集时,内存占用可能会增加。
3. 基本用法
创建 DoubleSummaryStatistics
对象,并使用 accept
方法添加数据,然后使用相应的方法获取统计结果。
import java.util.DoubleSummaryStatistics;public class BasicUsage {public static void main(String[] args) {// DoubleStream stats = DoubleStream.of(2.3, 3.5, 4.7, 5.6, 7.8);// DoubleSummaryStatistics stats = doubleStream.summaryStatistics();// 或DoubleSummaryStatistics stats = new DoubleSummaryStatistics();stats.accept(1.1);stats.accept(2.2);stats.accept(3.3);System.out.println("Count: " + stats.getCount());System.out.println("Sum: " + stats.getSum());System.out.println("Min: " + stats.getMin());System.out.println("Average: " + stats.getAverage());System.out.println("Max: " + stats.getMax());}
}
4. 详细使用案例
a. 收集基本统计数据
手动添加数据并收集统计结果。
import java.util.DoubleSummaryStatistics;public class BasicStatistics {public static void main(String[] args) {DoubleSummaryStatistics stats = new DoubleSummaryStatistics();double[] values = {1.1, 2.2, 3.3, 4.4, 5.5};for (double value : values) {stats.accept(value);}System.out.println("Count: " + stats.getCount());System.out.println("Sum: " + stats.getSum());System.out.println("Min: " + stats.getMin());System.out.println("Average: " + stats.getAverage());System.out.println("Max: " + stats.getMax());}
}
b. 结合 Stream 使用
使用 Stream API 直接收集统计数据。
import java.util.Arrays;
import java.util.DoubleSummaryStatistics;
import java.util.List;public class StreamStatistics {public static void main(String[] args) {List<Double> values = Arrays.asList(1.1, 2.2, 3.3, 4.4, 5.5);DoubleSummaryStatistics stats = values.stream().mapToDouble(Double::doubleValue).summaryStatistics();System.out.println("Count: " + stats.getCount());System.out.println("Sum: " + stats.getSum());System.out.println("Min: " + stats.getMin());System.out.println("Average: " + stats.getAverage());System.out.println("Max: " + stats.getMax());}
}
c. 并行流中的应用
利用并行流提高性能。
import java.util.Arrays;
import java.util.DoubleSummaryStatistics;
import java.util.List;public class ParallelStreamStatistics {public static void main(String[] args) {List<Double> values = Arrays.asList(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.0);DoubleSummaryStatistics stats = values.parallelStream().mapToDouble(Double::doubleValue).summaryStatistics();System.out.println("Count: " + stats.getCount());System.out.println("Sum: " + stats.getSum());System.out.println("Min: " + stats.getMin());System.out.println("Average: " + stats.getAverage());System.out.println("Max: " + stats.getMax());}
}
5. 总结
DoubleSummaryStatistics
是一个强大的工具,用于收集 double
类型数据的统计信息。它简化了统计计算过程,与 Stream API 集成良好,适用于各种数据分析和流处理场景。虽然它主要适用于 double
类型数据,但对于大多数统计需求来说,这已经足够强大且易用。通过合理使用 DoubleSummaryStatistics
,开发者可以显著提升代码的简洁性和性能。
6. 相关类
DoubleSummaryStatistics
类是 Java 8 引入的 java.util
包中的一个类,用于收集有关 double
数据的统计信息。它提供了一种方便的方式来计算数据流的计数、总和、最小值、最大值和平均值。与 DoubleSummaryStatistics
类似的类有:
a. IntSummaryStatistics
包名: java.util
功能: 收集 int
数据的统计信息,包括计数、总和、最小值、最大值和平均值。
IntSummaryStatistics intStats = new IntSummaryStatistics();
intStats.accept(1);
intStats.accept(2);
intStats.accept(3);
System.out.println(intStats.getAverage());
System.out.println(intStats.getSum());
b. LongSummaryStatistics
功能: 收集 long
数据的统计信息,包括计数、总和、最小值、最大值和平均值。
LongSummaryStatistics longStats = new LongSummaryStatistics();
longStats.accept(1L);
longStats.accept(2L);
longStats.accept(3L);
System.out.println(longStats.getAverage());
System.out.println(longStats.getSum());
7. 用法示例
这些类都实现了 Consumer
接口,因此可以与 Java 8 的流(Stream)API 一起使用。例如,使用 Stream
对象的 collect
方法,可以方便地将元素收集到这些统计类中。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);IntSummaryStatistics stats = numbers.stream().mapToInt(Integer::intValue).summaryStatistics();System.out.println("Average: " + stats.getAverage());
System.out.println("Sum: " + stats.getSum());
System.out.println("Min: " + stats.getMin());
System.out.println("Max: " + stats.getMax());
System.out.println("Count: " + stats.getCount());
8. 类似工具类的特点
这些统计类具有以下共同特点:
- 统计数据: 提供计数、总和、最小值、最大值和平均值的统计信息。
- 接口实现: 实现
Consumer
接口,可以方便地与流 API 一起使用。 - 常用方法:
accept(value)
: 接受一个值并将其包含在统计中。getCount()
: 返回计数。getSum()
: 返回总和。getMin()
: 返回最小值。getMax()
: 返回最大值。getAverage()
: 返回平均值。
这些类在处理基本类型的集合数据时非常有用,简化了统计计算的代码。
相关文章:
DoubleSummaryStatistics 及其相关类之-简介
1. DoubleSummaryStatistics 使用简介 在Java 8中,DoubleSummaryStatistics 类被引入作为 java.util 包的一部分。它是一个用于收集统计数据(如计数、最小值、最大值、和、平均值等)的类,特别适用于处理 double 类型的数据。 Do…...
java线程间的通信 - join 和 ThreadLocal
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
差分GPS原理
双差RTK(Real-Time Kinematic)算法是基于差分全球卫星导航系统(GNSS)技术的一种高精度定位方法。它利用至少两个接收机(一个为基站,其他为移动站)接收自同一组卫星的信号来实现精确测量。双差处…...
【栈与队列】前k个高频元素
题目:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 分析:首先我们需要计算数组中元素出现的频率,前几篇文章讲解了哈希表的应用,所以这里我们很容易想到用…...

B端产品竞品分析-总结版
B端竞品分析的难点 分析维度-业务逻辑复杂 B端产品与C端产品业务模型不同,B端产品主要以业务为导向,因此其业务流程与业务逻辑梳理起来也会较C端产品复杂的多,对于个人能力也有一定的要求,需要我们具备相关领域或行业专业知识。…...

刷代码随想录有感(116):动态规划——单词拆分
题干: 代码: class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string>set(wordDict.begin(), wordDict.end());vector<bool>dp(s.size() 1, false);dp[0] true;for(int j 0; j &…...

CSS-0_1 CSS和层叠(样式优先级、内联样式、选择器 用户代理样式)
CSS 的本质就是声明规则 ——《深入解析CSS》 文章目录 CSS层叠和优先级用户代理样式请和用户代理样式和谐相处 选择器单选择器的优先级选择器组的优先级关于选择器的其他源码顺序尽可能的选择优先级低的选择器 内联样式内联样式和JavaScript !important多个 !important 碎碎念…...

科技赋能冷链园区:可视化带来全新体验
应用图扑可视化技术,冷链园区能够更加直观地监控和管理资源,优化运作流程,提高运营效率与服务质量。...

高通安卓12-安卓系统定制2
将开机动画打包到system.img里面 在目录device->qcom下面 有lito和qssi两个文件夹 现在通过QSSI的方式创建开机动画,LITO方式是一样的 首先加入自己的开机动画,制作过程看前面的部分 打开qssi.mk文件,在文件的最后加入内容 PRODUCT_CO…...

高中数学:数列-解数列不等式问题的常用放缩技巧(重难点)
一、放缩技巧 技巧1 例题 证明:Sn<1 解: 变形 解: 由于第一种情况,我们证明了Sn<1,n≥1,是从第一项就开始放缩的。 发现,无法精确到 3 4 \frac{3}{4} 43 这时&am…...

[图解]企业应用架构模式2024新译本讲解17-活动记录1
1 00:00:01,070 --> 00:00:04,180 下一个我们要说的就是 2 00:00:04,190 --> 00:00:06,740 活动记录模式了 3 00:00:07,640 --> 00:00:11,210 同样是数据源架构模式 4 00:00:12,300 --> 00:00:18,480 里面的一个,活动记录 5 00:00:18,490 --> 00…...

[C++深入] --- malloc/free和new/delete
1 new运算符的拓展 1.1 自由存储区与堆的概念 在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区。 自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。 new操作符从自由存储区(free st…...
Spcok测试代码抛异常场景
测试代码抛异常场景 class ExceptionSpec extends Specification {def validateService new ValidateService()Unrolldef "验证UserInfo"() {when: "调用校验方法"validateService.validateUser(user)then: "捕获异常并设置需要验证的异常值&qu…...

【漏洞复现】脸爱云一脸通智慧管理平台 SystemMng 管理用户信息泄露漏洞(XVE-2024-9382)
0x01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大,运行稳定,操作简单方便,用户界面美观,轻松统计数据的一脸通系统。无需安装,只需在后台配置即可在浏览器登录。 功能包括:系统管理中心、人员信息管理中心、设备…...

新手如何入门Web3?
一、什么是Web3? Web3是指下一代互联网,它基于区块链技术,致力于将各种在线活动变得更加安全、透明和去中心化。Web3是一个广义的概念,涵盖了包括数字货币、去中心化应用、智能合约等在内的多个方面。它的主要特点包括去中心化、…...
React.FC`<ChildComponentProps>`解释
代码场景 ParentComponent.tsx import React, { useState } from react; import ChildComponent from ./ChildComponent;function ParentComponent() {const [childData, setChildData] useState<string>();const handleChildData (data: string) > { // 可以直接…...
2024-06-24力扣每日一题
链接: 503. 下一个更大元素 II 题意 循环数组,找出每个元素的往后最近且大于它的元素 解: 今天没试暴力啊,大概率是过不了的 思路就是先找到最大的数,最大数的结果肯定是-1,然后倒着遍历数组…...

pyhon模块以及常用的第三方模块
import my_info as info print(info.name) info.show()from my_info import * print(name) show() pyhon中包的导入 import admin.my_admin as ad # 包名.模块名 admin是包名,my_admin是模块名print(ad.name) print(ad.info())from admin import my_admin as ad # …...
shell脚本—快速修改centos网络配置
shell-文本中自行修改想要的配置 #!/bin/bash# 网卡名称 eth"eth0"# IP 地址 ipaddr"192.168.1.100"# 子网掩码 netmask"255.255.255.0"# 网关 gateway"192.168.1.1"# 写入配置文件 echo "BOOTPROTOstatic" > /etc/sysc…...

线程池概念、线程池的不同创建方式、线程池的拒绝策略
文章目录 💐线程池概念以及什么是工厂模式💐标准库中的线程池💐什么是工厂模式?💐ThreadPoolExecutor💐模拟实现线程池 💐线程池概念以及什么是工厂模式 线程的诞生是因为,频繁的创…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...

2025-05-08-deepseek本地化部署
title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek:小白也能轻松搞定! 如何给本地部署的 DeepSeek 投喂数据,让他更懂你 [实验目的]:理解系统架构与原…...
SQL进阶之旅 Day 22:批处理与游标优化
【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...

HTML版英语学习系统
HTML版英语学习系统 这是一个完全免费、无需安装、功能完整的英语学习工具,使用HTML CSS JavaScript实现。 功能 文本朗读练习 - 输入英文文章,系统朗读帮助练习听力和发音,适合跟读练习,模仿学习;实时词典查询 - 双…...