簡體   English   中英

IntSummaryStatistics的summaryStatistics方法

[英]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}
  1. 返回這些值有什么意義?
  2. 它不應該考慮錯誤的結果嗎?

請參閱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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM