加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么Guava中的空数组的最大值和最小值会抛出IllegalAr

发布时间:2020-12-15 05:11:17 所属栏目:Java 来源:网络整理
导读:我正在阅读Guava的Ints.max(int …数组)的代码(类似地,Ints.min,Longs.min等)如果array.length == 0(这是Guava 15.0),它们会抛出IllegalArgumentException . 我想知道为什么他们不会在这种情况下返回“身份元素”,而不是抛出异常. “身份元素”是指产品的行
我正在阅读Guava的Ints.max(int …数组)的代码(类似地,Ints.min,Longs.min等)如果array.length == 0(这是Guava 15.0),它们会抛出IllegalArgumentException .

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

这背后的基本原理是,如果将数组拆分为两个,则整个数组的最小值必须是两个子数组之间的最小值.或者,对于数学倾斜,一组空实数的总和为0,乘积为1,空集合的集合为空集,依此类推.

由于Guava图书馆往往是精心制作的,我想在这里抛出一个例外必须有一个解释.所以问题是:为什么?

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

解决方法

因为,恕我直言,在99.99%的情况下,当你问一个数组的最小元素时,你想得到这个数组的元素,而不是一些任意的大值.因此,大多数情况下,空阵列是一种特殊情况,需要特定的处理.因此,不处理这种特殊情况就是一个由异常发出信号的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读