[英]How can i use lambda method summaryStatistics() to find statistics of LocalTime values?
[英]summaryStatistics Method of IntSummaryStatistics
为什么空 IntStream 上的 summaryStatistics() 方法返回 integer 的最大值和最小值作为 stream 中存在的最大和最小 int 值?
IntStream intStream = IntStream.of();
IntSummaryStatistics stat = intStream.summaryStatistics();
System.out.println(stat);
Output :
IntSummaryStatistics{count=0, sum=0, min=2147483647, average=0.000000, max=-2147483648}
请参阅IntSummaryStatistics.getMax()和IntSummaryStatistics.getMin()文档,当没有记录值时,此处描述了这种确切的行为。
在这些极端情况下返回这些是明智的。 我将在这里解释这种行为IntSummaryStatistics.getMin()
。
示例:假设列表至少包含一个条目。 无论该条目的 integer 值是什么,它都不会大于Integer.MAX_VALUE
。 因此,当没有条目时返回此值是有意义的,以便为用户提供洞察力。
IntSummaryStatistics.getMax()
也是如此
此行为记录在 Javadoc 中,因此根据定义这是正确的行为:
int java.util.IntSummaryStatistics.getMin()
返回记录的最小值,如果没有记录值,则返回 Integer.MAX_VALUE。
回报:
最小值,如果没有,则为 Integer.MAX_VALUE
和
int java.util.IntSummaryStatistics.getMax()
返回记录的最大值,如果没有记录任何值,则返回 Integer.MIN_VALUE。
回报:
最大值,如果没有,则为 Integer.MIN_VALUE
至于“返回这些值的意义何在”,我们可以争辩说,空Stream
的最小值应该是这样的,即如果Stream
有任何元素,则该元素将小于该值。
同样,我们可以争辩说,空Stream
的最大值应该是这样的,即如果Stream
有任何元素,则该元素将大于该值。
要在任何数组中找到minimum int
值,通常将默认值初始化为Integer.MAX_VALUE
。
int min = Integer.MAX_VALUE;
for (int i : somearray) {
if (i < min) {
min = i;
}
}
return min;
因此,如果没有要迭代的内容,则将返回默认min
的值。 对于最大值,默认max
初始化为Integer.MIN_VALUE
。
由于列表为空并且这些方法返回一个实际值而不是Optional<Integer>
它假定完整的 Integer 范围。 否则它将返回一个空的Optional<Integer>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.