gpt4 book ai didi

java - 为什么 Guava 中的 max 和 min 对于空数组会抛出 IllegalArgumentException?

转载 作者:搜寻专家 更新时间:2023-11-01 04:07:57 25 4
gpt4 key购买 nike

我正在阅读 Guava 的 Ints.max(int... array) 的代码(同样,Ints.minLongs.min 等)如果 array.length == 0(这是 Guava 15.0),它们将抛出一个 IllegalArgumentException

我想知道为什么在这种情况下他们不返回“标识元素”,而是抛出异常。 “身份元素”是指元素的行为类似于产品的 1,或总和的 0。也就是说,我希望 Ints.min()Integer.MAX_VALUEInts.max()Integer。 MIN_VALUE,依此类推。

这背后的基本原理是,如果将一个数组一分为二,则整个数组的最小值必须是两个子数组的最小值之间的最小值。或者,对于数学爱好者来说,实数空集的和为 0,乘​​积为 1,空集合的并集为空集,等等。

既然Guava库往往是精心制作的,我想这里抛出异常肯定是有解释的。所以问题是:为什么?

编辑: 我知道大多数人都希望数组的最大值和最小值是数组的一个元素,但这是因为两个元素的最大值/最小值始终是其中之一。另一方面,如果将最大/最小值视为(可交换的)二元运算,则返回标识元素更有意义。对我来说。

最佳答案

因为,恕我直言,在 99.99% 的情况下,当您询问数组的最小元素时,您想要的是该数组的一个元素,而不是某个任意大的值。因此,大多数时候,空数组是一种特殊情况,需要特殊处理。因此,不处理这种特殊情况是一个错误,由异常发出信号。

关于java - 为什么 Guava 中的 max 和 min 对于空数组会抛出 IllegalArgumentException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22075910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com