gpt4 book ai didi

java - `Random.ints(origin, bound)` 、 `.longs(origin, bound)` 等的 API 是否缺少功能?

转载 作者:行者123 更新时间:2023-11-30 05:44:39 25 4
gpt4 key购买 nike

在我看来不可能包含 Integer.MAX_VALUELong.MAX_VALUE创建 IntStream 时尽可能使用随机值或LongStream使用 java.util.Random 的边界类。

这似乎是一种令人恼火的疏忽。我可以理解为什么他们试图与.doubles()保持一致版本,但它会尝试获取随机流 intlong可能包含最大值(但显然不是整个值范围,因为有一些方法可以做到这一点),这比它需要的要复杂得多。

我是否遗漏了什么,或者是否已在其他地方讨论过?

最佳答案

你是对的。 javadoc 指出上限是排他的。这意味着您无法使用 ints(lower, upper) 来获取包含 Integer.MAX_VALUE 的流。

理由?

这可能是设计者没有考虑从1开始的边缘情况,或者他们认为不值得“修复”使 API 复杂化的情况。

请注意,Random.nextInt(bound) 也有同样的问题,因此 Random 中的这个缺点从 Java 1.2 开始就存在。因此,另一种可能是设计者在添加 ints(...)longs(...) 方法时意识到了这个缺点,但决定不这样做解决这个问题,因为这会导致与旧方法的尴尬不一致。

1 - IMO,这不太可能。 Java 团队曾经是聪明人。从源代码中可以清楚地看出,他们现在已经清楚地意识到了这一点。

<小时/>

无论如何...如果您需要范围包含 MAX_VALUE 的随机数流,则可以使用无参数重载 (ints()longs()) 并过滤流。或者,您可以滚动自己的流。

关于java - `Random.ints(origin, bound)` 、 `.longs(origin, bound)` 等的 API 是否缺少功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55073514/

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