Java HashSet键/值对
为什么Java不提供函数来获取HashSet
中的键/值对,如Hashtable
中存在的那样?每次需要获得某些东西时,必须迭代它似乎是一件非常痛苦的事情。还是有更简单的方法来做到这一点?Java HashSet键/值对
由于Set
不包含键和值,所以不可能提供这样的视图。
你认为什么是关键,Set
的价值是什么?
我想我很困惑的文档: 从哈希表:“这个类实现了一个哈希表,它将键映射到值。” 从HashSet:“这个类实现Set接口,支持一个哈希表(实际上是一个HashMap实例)。“ 看看HashSet是一个HashMap和HashMap类似于Hashtable,为什么没有办法获得键/值对? 如果这是一个唯一性的问题不会重写compareTo()是否要走的路? – harley 2010-03-23 22:41:24
HashSet由HashMap返回__,这意味着它在内部使用HashMap。然而这并不意味着它暴露了HashMap。 – 2010-03-23 22:42:56
@Harley:正如Robert所说,HashSet中的HashMap是一个实现细节,它在外部是不可见的。下一步:如果你从来没有**放入一个键/值对,那么你期望它能看到什么? – 2010-03-23 22:59:17
A Set
没有任何键/值对,只是(唯一)值。正如您已经说过的那样,您可以通过Iterator
或通过使用toArray()
方法返回带有这些值的数组来获得这些值。
也许您正在寻找List
来代替。
你的意思是HashMap? HashSet不包含键/值对。 – 2010-03-23 22:37:48