java8 - java.util.DoubleSummaryStatistics类示例

685 阅读4分钟

Java8 java.time.DoubleSummaryStatistics  Class example

在这篇博文中,我们将通过实例来探讨DoubleSummaryStatistics 类和方法。

什么是java中的DoubleSummaryStatistics?

DoubleSummaryStatistics 是创建状态对象的类之一,用于计算统计操作,如双倍数据的和、最大、最小、平均和计数。

DoubleSummaryStatistics 是java.util包中定义的Double数据类型。

还有其他一些类,如IntSummaryStatistics用于整数数据类型,LongSummaryStatistics用于长数据类型。

这些对象可以以多种方式创建和使用。

以下是获得这些对象的方法。

DoubleSummaryStatistics接受方法示例

下面的代码是计算数值型双倍值的汇总统计。

这是在java中获取汇总统计数据的方法之一。

这里accept() 方法被用来增加计算统计值的数值。这需要Double 作为一个参数。

import java.util.DoubleSummaryStatistics;

public class DoubleSummaryStatisticsExample {
    public static void main(String[] args) {
        DoubleSummaryStatistics statsPrimitive = new DoubleSummaryStatistics();
        statsPrimitive.accept(10.0);
        statsPrimitive.accept(50.0);
        statsPrimitive.accept(2.0);
        statsPrimitive.accept(3.0);
        statsPrimitive.accept(20.0);
        System.out.println(statsPrimitive);
    }
}

上述代码的输出

DoubleSummaryStatistics{count=5, sum=85.000000, min=2.000000, average=17.000000, max=50.000000} 

如何创建一个DoubleSummaryStatistics对象的例子

这是为有限的数据集创建一个未经修改的集合并返回一个列表的方法之一。

  • 首先,使用java8中引入的因子静态方法of() ,创建一个列表。
  • 请看List.of()方法
  • 使用List.Stream()方法从对象列表中创建DoubleSummaryStatistics对象。
  • 将给定的对象流应用于mapToDouble() 方法,该方法以ToDoubleFunction 作为输入参数。
  • 请点击ToDoubleFunction功能接口了解更多信息。
  • 使用Lambda表达式将流中的每个元素映射并转换为Double值。
  • 最后,调用summaryStatistics()方法来返回统计数据的状态对象。
import java.util.DoubleSummaryStatistics;
import java.util.List;
public class Summary2 {
    public static void main(String[] args) {
        List empLists=List.of(new Employee(5000),new Employee(2000),new Employee(21000),new Employee(2500));
        DoubleSummaryStatistics sumaryStats = empLists.stream()
                .mapToDouble((value) -> value.getSalary()).summaryStatistics();
        System.out.println(sumaryStats);
    }
}
class Employee {

    double salary;

    public Employee(double salary) {
        super();
        this.salary = salary;
    }

    public double getSalary() {
        return salary;
    }
}

上述代码的输出是

DoubleSummaryStatistics{count=4, sum=30500.000000, min=2000.000000, average=7625.000000, max=21000.000000}

DoubleStream summaryStatistics()方法示例

还有一种方法是使用DoubleStream summaryStatistics() 方法来计算统计数据。

import java.util.DoubleSummaryStatistics;
import java.util.stream.DoubleStream;

public class DoubleSummaryStatisticsExample {
    public static void main(String[] args) {
        DoubleStream doubleStream = DoubleStream.of(5.0, 4.0, 1.0, 7.0, 3.0);
        DoubleSummaryStatistics summaryStats = doubleStream.summaryStatistics();
        System.out.println(summaryStats);
    }
}

输出:

DoubleSummaryStatistics{count=5, sum=20.000000, min=1.000000, average=4.000000, max=7.000000}

以下是一连串的步骤

  • 首先,使用DoubleStream.of() 方法创建一个双流。
  • DoubleStream 是一个流类,用于对原始的双倍数据进行顺序和并行操作。它是java8中的一个双倍版流类。
  • 调用summaryStatistics() 方法得到DoubleSummaryStatistics 对象,该对象具有双数据的摘要数据,如计数、总和、最小、平均和最大。
  • 这是Stream API的一个缩减操作,它接受一个输入值数组,并给出一个数据摘要的输出。

采集器summaryizingDouble()方法示例

Collectors.summarizingDouble() 是一个定义在 java.util.stream包中的静态方法。

语法:

 Collector summarizingDouble(ToDoubleFunction mapper)

thesummarizingDouble 方法接受ToDoubleFunction 作为输入参数。

ToDoubleFunction 是 包中提供的一个功能接口。java.util.function

这些功能接口将对象转换为原始的双数。请看更多关于ToDoubleFunction的信息。

它返回java.util.stream.Collectors ,通过将每个元素映射到Function ,将每个元素转换为Double ,并返回DoubleSummaryStatistics 类。

import java.util.Arrays;
import java.util.DoubleSummaryStatistics;
import java.util.List;
import java.util.stream.Collectors;

public class DoubleSummaryStatisticsExample {
    public static void main(String[] args) {
        List list = Arrays.asList(5.0, 4.0, 1.0, 7.0, 3.0);
        DoubleSummaryStatistics summaryStats1 = list.stream().collect(Collectors.summarizingDouble(Double::doubleValue));
        System.out.println(summaryStats1);
    }
}

上述代码的输出是

DoubleSummaryStatistics{count=5, sum=20.000000, min=1.000000, average=4.000000, max=7.000000}
  • 首先通过使用Arrays.asList() 方法创建一个双倍列表。
  • 使用list.stream()方法将List 转换为Stream ,它返回对象的流。
  • 将这个数据流应用于还原运算器collect() 方法,该方法采用总结收集器方法Collectors.summarizingDouble()
  • 这将计算并返回封装在DoubleSummaryStatistics 对象中的数据。

DoubleSummaryStatistics方法列表

以下是由java支持的内置方法。

方法说明
accept(double)为汇总操作添加双倍值。不返回任何东西。
Combine(DoubleSummaryStatistics)将其他总结性统计对象合并到此,不返回。
getAverage()返回数值的平均值或中位数,如果不存在任何数值则返回0
getCount()返回增加的数值的数量
getMax()返回双倍值列表中的最大值。如果添加了NaN值,返回NaN,如果没有添加值,返回Double.NEGATIVE_INFINITY值
getMin()从一个双数列表中返回最小值。如果添加了NaN值,则返回NaN,如果没有添加任何值,则返回Double.POSITIVE_INFINITY值。
getSum()返回列表中所有双数值的总和,如果没有添加任何值,则返回零。

总结

通过实例学习了DoubleSummaryStatistics对象的创建和方法的使用。