DoubleSummaryStatistics 及其相关类之-简介

1. DoubleSummaryStatistics 使用简介

在Java 8中,DoubleSummaryStatistics 类被引入作为 java.util 包的一部分。它是一个用于收集统计数据(如计数、最小值、最大值、和、平均值等)的类,特别适用于处理 double 类型的数据。

DoubleSummaryStatistics 是一个用于统计 double 值数据的类,能够同时计算出以下几个统计数据:

  • 总数(count)
  • 总和(sum)
  • 最小值(min)
  • 最大值(max)
  • 平均值(average)

它提供了一组方法用于更新和检索这些统计数据,并且与 Java 8 中的 Stream API 无缝集成。

2. 使用场景和优缺点

a. 使用场景
  1. 数据分析:在处理大量 double 类型数据时,使用 DoubleSummaryStatistics 可以轻松获取关键统计数据。
  2. 数据流处理:与 Stream API 结合使用,简化统计操作。
  3. 实时统计:在需要不断更新统计数据的实时系统中,DoubleSummaryStatistics 提供了便捷的方式。
b. 优点
  1. 简洁性:简化了统计数据的计算,避免手动编写累加器。
  2. 性能:适用于大数据集的处理,结合并行流使用时具有良好的性能。
  3. 易用性:提供了开箱即用的方法来获取统计数据。
c. 缺点
  1. 单一用途:主要用于 double 类型数据的统计,其他类型数据需要使用对应的类,如 IntSummaryStatisticsLongSummaryStatistics
  2. 内存占用:在处理极大数据集时,内存占用可能会增加。

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(): 返回平均值。

这些类在处理基本类型的集合数据时非常有用,简化了统计计算的代码。

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

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

相关文章

【OpenGauss源码学习 —— (ALTER TABLE(修改表空间))】

ALTER TABLE&#xff08;列存删除列&#xff09; ALTER TABLE ... SET TABLESPACEExecChangeTableSpaceForRowTable 函数ATExecSetTableSpace 函数 ExecChangeTableSpaceForRowPartition 函数ATExecSetTableSpaceForPartitionP3 函数 ExecChangeTableSpaceForCStoreTable 函数C…

DeepSeek-Coder-v2击败GPT-4 Turbo,成为竞技场最强开源编码模型!

目录 01 编码与数学击败GPT-4 Turbo 02 深度求索&#xff1a;价格战的导火索 就在刚刚&#xff0c;竞技场排名再次刷新&#xff1a;深度求索的DeepSeek-Coder-v2成为竞技场最强开源编码模型&#xff01; 它在Coding Arena中已攀升至第4名&#xff0c;水平接近GPT-4 Turbo。 没…

mysql的information_schema浅析

information_schema 是 MySQL 中的一个虚拟数据库&#xff0c;它包含了关于 MySQL 服务器的所有元数据。 information_schema 作用 元数据管理&#xff1a;提供关于数据库、表、列、索引、权限等的信息。 性能优化&#xff1a;帮助了解数据库结构和索引使用情况&#xff0c;便…

Latex学习之“usefont”用法

Latex学习之“\usefont”用法 一、通俗的解释 \usefont 是 LaTeX 中的一个命令&#xff0c;用于在文档中临时改变字体&#xff0c;其基本语法如下&#xff1a; \usefont{字体编码}{字体族}{字体系列}{字体形状}这样看起来好像蛮抽象&#xff0c;你可能以及晕了&#xff0c;什…

QT中eventFilter的用途详解

QEventFilter 是 Qt 框架中的一个机制&#xff0c;用于拦截和处理事件。这在 Qt 的事件驱动模型中非常重要&#xff0c;因为它允许我们在事件到达目标对象之前捕获并处理它们。下面是对 QEventFilter 的详细解释&#xff0c;分为几个关键部分&#xff1a; 1. 事件处理机制 在…

Arduino称重传感器和 HX711 放大器(数字秤)

Arduino称重传感器和 HX711 放大器&#xff08;数字秤&#xff09; Arduino with Load Cell and HX711 Amplifier (Digital Scale) In this guide, you’ll learn how to create a digital scale with the Arduino using a load cell and the HX711 amplifier. First, you’l…

队列。。。

目的&#xff1a; 1&#xff0e;掌握队列存储结构的表示和实现方法。 2&#xff0e;掌握队列的入队和出队等基本操作的算法实现。 3&#xff0e;了解队列在解决实际问题中的简单应用。 要求&#xff1a; &#xff08;1&#xff09;根据输入的队列长度n和各元素值建立一个循环队…

Redis-使用 jedis 操作数据

文章目录 1、Jedis简介2、环境准备3、创建maven普通项目,导入如下依赖4、测试JAVA程序和Redis之间的通信 1、Jedis简介 "Jedis" 通常是作为 "Java Redis" 的缩写或简称来理解的。Java Embedded Data Structures Interface 表示 Java嵌入式数据结构接口 2、…

高德行政区查询-综合省市县三级选择跳转

一、需求&#xff1a; 需要使用高德地图进行省市县的一个选择&#xff0c;每选择一次就在地图上对选择的省市县进行定位并画出该区域的范围。 最终效果&#xff1a; 二、准备工作 高德的API的key&#xff1a;两种 三、完整页面代码 综合的是这两篇中的内容&#xff08;不…

19、删除链表的倒数第

1、题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 …

Vue3从入门到精通

文章目录 前言为什么选择Vue框架Vue是什么?为什么要学习Vue? Vue简介Vue API风格选项式API(Options API)组合式API(Composition API) Vue开发前的准备创建Vue项目 Vue项目目录结构![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0400cdd482704d4d9ffa8a3a6687b12…

什么是档案业务建设评价

档案业务建设评价是对档案管理机构或部门在档案业务建设方面进行的评估和考核。评价主要根据一定的评价标准和指标&#xff0c;对档案业务的各个方面进行综合评估&#xff0c;包括档案收集、整理、保管、利用等环节&#xff0c;以及档案管理机构的组织管理、技术能力等方面。 评…

猫头虎 分享已解决Error || API Rate Limits: HTTP 429 Too Many Requests

猫头虎 分享已解决Error || API Rate Limits: HTTP 429 Too Many Requests &#x1f42f; 摘要 &#x1f4c4; 大家好&#xff0c;我是猫头虎&#xff0c;一名专注于人工智能领域的博主。在AI开发中&#xff0c;我们经常会遇到各种各样的错误&#xff0c;其中API Rate Limits…

Redis-笔记(视频摘抄:哔哩哔哩博主(感谢!)-遇见狂神)

Redis&#xff08;缓存数据库&#xff0c;有效控制查询&#xff09;是非关系型数据库 缓存穿透、缓存击穿&#xff0c;缓存雪崩 Nosql概述 为什么使用NoSQL 大数据时代&#xff0c;那么什么是大数据&#xff0c;大数据就是一般的数据库没有办法进行分析处理&#xff0c;其中…

算法训练(leetcode)第十六天 | 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先

刷题记录 530. 二叉搜索树的最小绝对差递归非递归 501. 二叉搜索树中的众数*236. 二叉树的最近公共祖先 530. 二叉搜索树的最小绝对差 leetcode题目地址 如果是一颗普通树&#xff0c;则使用暴力求解法&#xff1a;遍历树并保存树种每个节点的值&#xff0c;排序后找差值最小…

【Unity】数据持久化 PlayerPrefs

1、PlayerPrefs是什么 是unity提供的可以用于存储读取玩家数据的公共类 2、存储相关 2.1 PlayerPrefs的数据存储类似于键值对存储一个键对应一个值 提供了存储3种数据的方法int float string 键: string类型 值: int float string对应3种API PlayerPrefs.SetInt("myAge…

Web 应用开源项目大全

Web 应用开源项目大全结合巴比达内网穿透实现WEB公开访问。 下面是一个Web应用的开源列表。没什么可说的&#xff0c;太疯狂了。尤其是Web 2.0那一堆。我不知道你怎么想&#xff0c;有些开源项目的源码写得挺不好的&#xff0c;尤其是性能方面。或许你会以为改一改他们就可以成…

java构造方法的重载

在java中&#xff0c;与普通方法一样&#xff0c;构造方法也可以重载&#xff0c;在一个类中可以定义多个构造方法&#xff0c;但是要求每个构造方法的参数类型或参数不同。在创建对象时&#xff0c;可以通过调用不同的构造方法为不同属性赋值。 示例代码如下 class Student5…

全球网络战市场规模未来十年将超过万亿元

报告称&#xff0c;网络战市场涉及组件、最终用户和地区&#xff0c;其中组件分为硬件、软件和服务&#xff0c;最终用户分为政府、企业和私人、航空航天和国防、BFSI&#xff08;银行、金融服务和保险&#xff09;、医疗保健等&#xff0c;地区涉及北美、欧洲、亚太地区和拉美…

python turtle 画帕恰狗

先上个图给大家看看 代码 ##作者V w1933423 import turtle turtle.bgcolor("#ece8dc") turtle.setup(600,900) p turtle.Pen() p.pensize(14) p.speed(5) p.color("black")p.penup() p.goto(-54,-44) p.pendown() p.goto(-37,-39) p.goto(-27,-24) p.go…