2011-08-04 51 views
1

java是否使用开放寻址或链接来实现散列表?Hashtable实现中使用的算法?

是某种规格/认证要求的方法之一吗?

+13

比检查源代码更容易吗? http://www.docjar.com/html/api/java/util/Hashtable.java.html – MByD

+2

Java可能不需要。个人实现可能会做他们认为最好的事情,因为这样的事情就是实现细节。 – delnan

+3

你还应该看看HashMap,LinkedHashMap和ConcurrentHashMap,它们都有细微的差别。除非必须,否则我建议你不要使用旧的Hashtable类。 –

回答

1

java.util.HashMapjava.util.Hashtable都使用某种链接,至少在Sun/Oracle JRE和OpenJDK使用的实现中。

0

该规范在Javadoc中。

2

如果你看the Javadoc for Hashtable,你会注意到它没有指定它使用的散列方案。这意味着任何兼容的Java实现都可以实现这个对象,只要它符合接口中指定的复杂性保证。只要接口中指定的保证得到满足,一个兼容的实现就可以使用链接,二次哈希,Robin hood哈希,动态完美哈希,杜鹃散列等。

从客户的角度来看,你不应该担心这个问题。

+0

+1依赖于文档而不是实施。 – JimN