为什么 minBy() returns 是可选的而其他的不是?
why does the minBy() returns Optional but others dont?
我的问题是为什么Collectors.minBy()方法return是可选的,而Collectors.summingInt()或Collectors.averagingInt()方法没有return一个Optional?是不是调用这些方法的时候stream是空的?
从逻辑上讲,如果集合为空,则不能有最小值或最大值。当没有可能的合法值时,返回一个空 Optional
是合适的。
相反,有人可能会争辩说没有元素的总和(空集合)为零,零在数字上意味着“无”。如果我没有苹果,再加上一个没有苹果的空袋子,我有多少苹果?零;无和为零。
同上平均。如果我有三个空袋子,每个袋子的平均苹果数为零。
但是,我承认理性的人可能会不同意,尤其是在某些情况下。我不知道数学家世界怎么说。但我确实相信普通商人在这两种情况下都期望为零。
请注意,Javadoc 明确指出:“如果不存在任何元素,则结果为 0。”。 最后,重要的是 Javadoc 承诺的行为。 如果该行为不符合您的期望,请将您对 class 的使用替换为另一个 class那样做,或者自己写。
我的问题是为什么Collectors.minBy()方法return是可选的,而Collectors.summingInt()或Collectors.averagingInt()方法没有return一个Optional?是不是调用这些方法的时候stream是空的?
从逻辑上讲,如果集合为空,则不能有最小值或最大值。当没有可能的合法值时,返回一个空 Optional
是合适的。
相反,有人可能会争辩说没有元素的总和(空集合)为零,零在数字上意味着“无”。如果我没有苹果,再加上一个没有苹果的空袋子,我有多少苹果?零;无和为零。
同上平均。如果我有三个空袋子,每个袋子的平均苹果数为零。
但是,我承认理性的人可能会不同意,尤其是在某些情况下。我不知道数学家世界怎么说。但我确实相信普通商人在这两种情况下都期望为零。
请注意,Javadoc 明确指出:“如果不存在任何元素,则结果为 0。”。 最后,重要的是 Javadoc 承诺的行为。 如果该行为不符合您的期望,请将您对 class 的使用替换为另一个 class那样做,或者自己写。