【Java 8 新特性】Java 8 汇总统计示例 | 最大值、最小值、平均值、总数、合计
Java 8 汇总统计示例 | 最大值、最小值、平均值、总数、合计汇总统计方法DoubleSummaryStatistics 和 Collectors.summarizingDouble()IntSummaryStatistics 和 Collectors.summarizingInt()LongSummaryStatistics 和 Collectors.summarizingLong()基本数
Java 8 汇总统计示例 | 最大值、最小值、平均值、总数、合计
在这个页面上,我们将提供
java 8汇总统计的例子。
我们可以一次性计算所有的统计信息,如计数、最小、最大、总和和平均数。
Java 8为double数据类型提供DoubleSummaryStatistics,为integer数据类型提供IntSummaryStatistics,为long数据类型提供LongSummaryStatistics。
这些类与元素流一起工作。
汇总统计方法
找到汇总统计的方法。这些方法属于java 8的汇总统计类。getAverage(): 它返回所有接受值的平均值。getCount(): 它计算所有元素的总数。getMax(): 它返回最大值。getMin(): 它返回最小值。getSum(): 它返回所有元素的总和。accept(): 它将元素添加到汇总信息中。combine(): 它结合了两个汇总统计。
DoubleSummaryStatistics 和 Collectors.summarizingDouble()
DoubleSummaryStatistics收集double数据类型流的统计信息。Collectors.sumplizingDouble()接受double映射函数并返回double汇总统计的收集器(Collector)。
DoubleSummaryStatistics dstats = list.stream()
.collect(Collectors.summarizingDouble(Rectangle::getWidth));
IntSummaryStatistics 和 Collectors.summarizingInt()
IntSummaryStatistics收集了int数据类型流的统计信息。Collectors.summaryizingInt()接受int的映射函数,并返回integer汇总统计的收集器(Collector)。
IntSummaryStatistics istats = list.stream()
.collect(Collectors.summarizingInt(Rectangle::getLength));
LongSummaryStatistics 和 Collectors.summarizingLong()
LongSummaryStatistics收集了long数据类型流的统计信息。Collectors.summarizingLong()接受long的映射函数,并返回long汇总统计的收集器(Collector)。
LongSummaryStatistics lstats = list.stream().
collect(Collectors.summarizingLong(Rectangle::getId));
基本数据类型的汇总统计示例
SummaryStatisticsWithPrimitiveDataType.java
import java.util.DoubleSummaryStatistics;
import java.util.IntSummaryStatistics;
import java.util.LongSummaryStatistics;
import java.util.stream.DoubleStream;
import java.util.stream.IntStream;
import java.util.stream.LongStream;
public class SummaryStatisticsWithPrimitiveDataType {
public static void main(String[] args) {
System.out.println("---DoubleSummaryStatistics---");
DoubleSummaryStatistics dstats = DoubleStream.of(5.33d,2.34d,5.32d,2.31d,3.51d).
collect(DoubleSummaryStatistics::new, DoubleSummaryStatistics::accept,
DoubleSummaryStatistics::combine);
System.out.println("Max:"+dstats.getMax()+", Min:"+dstats.getMin());
System.out.println("Count:"+dstats.getCount()+", Sum:"+dstats.getSum());
System.out.println("Average:"+dstats.getAverage());
System.out.println("---LongSummaryStatistics---");
LongSummaryStatistics lstats = LongStream.of(51l,23l,53l,23l,35l).
collect(LongSummaryStatistics::new, LongSummaryStatistics::accept,
LongSummaryStatistics::combine);
System.out.println("Max:"+lstats.getMax()+", Min:"+lstats.getMin());
System.out.println("Count:"+lstats.getCount()+", Sum:"+lstats.getSum());
System.out.println("Average:"+lstats.getAverage());
System.out.println("---IntSummaryStatistics---");
IntSummaryStatistics istats = IntStream.of(51,22,50,27,35).
collect(IntSummaryStatistics::new, IntSummaryStatistics::accept,
IntSummaryStatistics::combine);
System.out.println("Max:"+istats.getMax()+", Min:"+istats.getMin());
System.out.println("Count:"+istats.getCount()+", Sum:"+istats.getSum());
System.out.println("Average:"+istats.getAverage());
}
}
输出
---DoubleSummaryStatistics---
Max:5.33, Min:2.31
Count:5, Sum:18.81
Average:3.7619999999999996
---LongSummaryStatistics---
Max:53, Min:23
Count:5, Sum:185
Average:37.0
---IntSummaryStatistics---
Max:51, Min:22
Count:5, Sum:185
Average:37.0
对象的汇总统计示例
SummaryStatisticsDemoWithObject.java
import java.util.DoubleSummaryStatistics;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.LongSummaryStatistics;
import java.util.stream.Collectors;
public class SummaryStatisticsDemoWithObject {
public static void main(String[] args) {
System.out.println("--DoubleSummaryStatistics--");
List<Rectangle> list = Rectangle.getRectangle();
DoubleSummaryStatistics dstats = list.stream()
.collect(Collectors.summarizingDouble(Rectangle::getWidth));
System.out.println("Max:"+dstats.getMax()+", Min:"+dstats.getMin());
System.out.println("Count:"+dstats.getCount()+", Sum:"+dstats.getSum());
System.out.println("Average:"+dstats.getAverage());
System.out.println("--IntSummaryStatistics--");
list = Rectangle.getRectangle();
IntSummaryStatistics istats = list.stream()
.collect(Collectors.summarizingInt(Rectangle::getLength));
System.out.println("Max:"+istats.getMax()+", Min:"+istats.getMin());
System.out.println("Count:"+istats.getCount()+", Sum:"+istats.getSum());
System.out.println("Average:"+istats.getAverage());
System.out.println("--LongSummaryStatistics--");
list = Rectangle.getRectangle();
LongSummaryStatistics lstats = list.stream().
collect(Collectors.summarizingLong(Rectangle::getId));
System.out.println("Max:"+lstats.getMax()+", Min:"+lstats.getMin());
System.out.println("Count:"+lstats.getCount()+", Sum:"+lstats.getSum());
System.out.println("Average:"+lstats.getAverage());
}
}
Rectangle.java
import java.util.ArrayList;
import java.util.List;
public class Rectangle {
private long id;
private int length;
private double width;
public Rectangle(long id, int length, double width) {
this.id = id;
this.length = length;
this.width = width;
}
public long getId() {
return id;
}
public int getLength() {
return length;
}
public double getWidth() {
return width;
}
public static List<Rectangle> getRectangle() {
List<Rectangle> list = new ArrayList<>();
list.add(new Rectangle(100l, 213, 114.23d));
list.add(new Rectangle(200l, 233, 134.34d));
list.add(new Rectangle(300l, 243, 144.32d));
list.add(new Rectangle(400l, 253, 154.12d));
return list;
}
}
输出
--DoubleSummaryStatistics--
Max:154.12, Min:114.23
Count:4, Sum:547.01
Average:136.7525
--IntSummaryStatistics--
Max:253, Min:213
Count:4, Sum:942
Average:235.5
--LongSummaryStatistics--
Max:400, Min:100
Count:4, Sum:1000
Average:250.0
参考文献
更多推荐



所有评论(0)