Java 哈希表实现中使用的算法?

Java 哈希表实现中使用的算法?,java,hashtable,Java,Hashtable,java是否使用开放寻址或链接来实现哈希表 某种规范/认证需要一种方法还是另一种方法?java.util.HashMap和java.util.Hashtable都使用某种链接,至少在Sun/Oracle JRE和OpenJDK中使用的实现中是这样。规范在Javadoc中。如果你看,您会注意到,它没有指定使用哪个哈希方案。这意味着任何兼容的Java实现都可以实现这个对象,只要它遵守接口中指定的复杂性保证,不管它认为合适与否。兼容的实现可以使用链式、二次哈希、罗宾汉哈希、动态完美哈希、布谷鸟哈希等,

java是否使用开放寻址或链接来实现哈希表


某种规范/认证需要一种方法还是另一种方法?

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

规范在Javadoc中。

如果你看,您会注意到,它没有指定使用哪个哈希方案。这意味着任何兼容的Java实现都可以实现这个对象,只要它遵守接口中指定的复杂性保证,不管它认为合适与否。兼容的实现可以使用链式、二次哈希、罗宾汉哈希、动态完美哈希、布谷鸟哈希等,只要满足接口中指定的保证


但是,从客户端的角度来看,您不必担心这一点。

有什么比检查源代码更容易?Java可能也不需要。个别实现可能会做他们认为最好的事情,因为这是实现细节。您还应该看看HashMap、LinkedHashMap和ConcurrentHashMap,它们都有细微的不同。我建议您不要使用旧的Hashtable类,除非您必须使用。请参阅+1以了解依赖文档而非实现的信息。