没有Java Set的随机访问方法

时间:2014-11-19 10:51:17

标签: java collections set

我想知道为什么Java get(Object)中没有像Map这样的随机访问方法Set。在当前的实现中,迭代整个集合似乎是不必要的开销。

3 个答案:

答案 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按照您的意愿对象。另请注意,这样做不会产生任何开销,因为HashSetHashMap的方式实现,几乎完全相同。

答案 2 :(得分:0)

正如其他人所指出的,Set在数学集之后或多或少地建模,并且不关心随机访问。但是,如果您必须访问一个元素,则可以执行以下操作:

Set<Object> mySet = new HashSet<Object>();
mySet.add("one");
Object access = mySet.toArray()[0];