java.util.Set
仅指定返回所有记录的方法(通过 Iterator 或数组)。
为什么没有从 Set 返回任何值的选项?
它在现实生活中有很大的意义。例如,我有一碗草莓,我想只吃一个。我完全不在乎是哪一个。
为什么我不能在 java 中做同样的事情?
最佳答案
这不是可以回答的。您必须询问 Java 集合框架的原始设计者。
一个似是而非的原因是具有不确定行为的方法往往有问题:
- 它们使单元测试更加困难。
- 它们使错误更难追踪。
- 它们更容易被懒得阅读 API 文档的程序员误解和误用。
对于基于哈希表的集合组织,“获取某些元素”方法的行为将是不确定的,或者至少难以确定/预测。
顺便说一句,您可以按如下方式简单地获取非空集合的一些元素:
Object someObject = someSet.iterator().next();
获得一个真正的(伪)随机元素有点棘手/昂贵,因为您无法索引集合的元素。 (您需要将所有集合元素提取到一个数组中...)
在重新审视这个问题时,我意识到还有另一个原因。简单地说,Set
是基于集合的数学概念,而数学中集合的元素是没有顺序的。谈论数学集合的第一个元素根本没有意义。
关于java - 为什么 java.util.Set 不能返回任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9583094/