[英]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.