我想知道为什么Java get(Object)
中没有像Map
这样的随机访问方法Set
。在当前的实现中,迭代整个集合似乎是不必要的开销。
答案 0 :(得分:4)
> boolean contains(Object o)
Returns true if this set contains the specified element.
(来自https://docs.oracle.com/javase/7/docs/api/java/util/Set.html)
答案 1 :(得分:4)
Set
不是关于随机元素检索 - 它是关于测试其中元素的存在。如果您的应用程序要求检索,那么它实际需要的是身份映射(您put(key, key)
的地图)。然后,您将能够get
按照您的意愿对象。另请注意,这样做不会产生任何开销,因为HashSet
以HashMap
的方式实现,几乎完全相同。
答案 2 :(得分:0)
正如其他人所指出的,Set
在数学集之后或多或少地建模,并且不关心随机访问。但是,如果您必须访问一个元素,则可以执行以下操作:
Set<Object> mySet = new HashSet<Object>();
mySet.add("one");
Object access = mySet.toArray()[0];