什么是java中的IntSummaryStatistics类?
IntSummaryStatistics 是一个用于获取统计数据的类,使用整数数据的sum、max、min、average和count操作。
IntSummaryStatistics 它是为java.util包中定义的Integer数据类型而设。
还有其他一些类,如DoubleSummaryStatistics用于双倍数据类型,LongSummaryStatistics用于长数据类型。
创建的对象可以被设计成与java8流和lambda表达式一起工作。
我们有很多方法可以创建IntSummaryStatistics 对象。
IntSummaryStatistics接受方法的例子
使用IntSummaryStatistics.accept() 方法,该方法接受整数值作为输入并将该值记录到对象中。
它是对整数数据进行统计运算的一种方法,而且很简单。
import java.util.IntSummaryStatistics;
public class IntSummaryStatisticsExample {
public static void main(String[] args) {
IntSummaryStatistics statsPrimitive = new IntSummaryStatistics();
statsPrimitive.accept(7);
statsPrimitive.accept(6);
statsPrimitive.accept(4);
statsPrimitive.accept(2);
statsPrimitive.accept(18);
statsPrimitive.accept(5);
System.out.println(statsPrimitive);
}
}
输出:
IntSummaryStatistics{count=6, sum=42, min=2, average=7.000000, max=18}
IntSummaryStatistics List Stream lambda expressionExample
- 首先使用
List.of()方法创建了一个雇员对象的列表。of()方法是java8语言中引入的工厂静态方法。 - 使用List.stream()方法为一个对象的列表创建了流。
- 对于每个流对象,使用
mapToInt方法映射ToIntFunction。 ToIntFunction是一个功能接口,它接受一个对象作为输入并输出整数值。请看ToIntFunction的 例子。mapToInt()使用lambda表达式返回 ,最后调用 reducer操作来返回 对象。这个对象持有封装在这个对象中的统计数据。IntStreamsummaryStatisticsIntSummaryStatistics
import java.util.IntSummaryStatistics;
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));
IntSummaryStatistics sumaryStats = empLists.stream().mapToInt((value) -> value.getSalary()).summaryStatistics();
System.out.println(sumaryStats);
}
}
class Employee {
Integer salary;
public Employee(Integer salary) {
super();
this.salary = salary;
}
public Integer getSalary() {
return salary;
}
}
上述代码执行的输出是
IntSummaryStatistics{count=4, sum=30500, min=2000, average=7625.000000, max=21000}
采集器summaryizingInt()方法示例
Collectors.summarizingInt() 是一个定义在 包中的静态方法。java.util.stream
语法
public static Collector summarizingInt(ToIntFunction mapper)
这个函数接受对象并产生整数结果作为输出。ToIntFunction是在java.util.function 包中提供的一个功能接口。
import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.stream.Collectors;
public class summaryStats {
public static void main(String[] args) {
List list = Arrays.asList(7,8,1,5,6);
IntSummaryStatistics summaryStats = list.stream().collect(Collectors.summarizingInt(Integer::intValue));
System.out.println(summaryStats);
}
}
输出:
IntSummaryStatistics{count=5, sum=27, min=1, average=5.400000, max=8}
- 使用Arrays.asList()方法从数组中创建一个整数的列表。
- 使用
stream()创建流对象,返回对象的流 - 最后,使用collect方法调用collect来减少操作,并输入
Collectors.summarizingInt - 返回被封装在
IntSummaryStatistics
IntStream summaryStatistics()方法示例
IntStream是Stream API的一个整数版本。IntStreamsummaryStatistics() 提供获取整数摘要统计对象。
import java.util.IntSummaryStatistics;
import java.util.stream.IntStream;
public class summaryStats {
public static void main(String[] args) {
IntStream intStream = IntStream.of(8,6,4,8,3);
IntSummaryStatistics summaryStats = intStream.summaryStatistics();
System.out.println(summaryStats);
}
}
上述代码的输出是:
IntSummaryStatistics{count=5, sum=29, min=3, average=5.800000, max=8}
从一个数字数组创建了IntStream IntStream*.of()方法*
通过调用IntStream.summaryStatistics方法返回了汇总统计数据。
IntSummaryStatistics方法
以下是java支持的对整数数据进行汇总统计操作的内建方法
| 方法名称 | 说明 |
|---|---|
| accept(integer) | 记录用于汇总操作的整数值,不返回。 |
| Combine(IntSummaryStatistics) | 将其他总结性统计数字合并到这里,不返回。 |
| getAverage() | 返回对列表值的平均操作,如果没有值,则返回0 |
| getCount() | 返回记录的数值的数量 |
| getMax() | 返回整数值列表中的最大值。如果加入NaN值,则返回NaN,如果没有加入任何值,则返回MAX_VALUE值。 |
| getMin() | 从一个整数列表中返回最小值。如果加入NaN值,返回NaN,如果没有加入任何值,返回MIN_VALUE值。 |
| getSum() | 返回列表中所有整数值的总和,如果没有添加任何值,则返回0。 |
总结
通过实例学习了IntSummaryStatistics 对象的创建和方法的使用。