我已经使用内置的 java.util.hashtable 创建了一个程序,但现在我需要使用单独的链接来解决冲突。哈希表的这种实现是否可能?是否已经实现了使用单独链接的方法?
最佳答案
查看source对于 Hashtable 实现,看起来它已经使用了单独的链接。如果你看Entry<K,V>
从第 901 行开始查看类,您会看到它引用了另一个名为 next
的 Entry 。如果你再看看put()
方法,第 420 行 next
引用通过构造函数填充为之前存储在该存储桶中的任何元素。
请注意,您通常不应该关心诸如此类的实现细节。 Java 集合框架可能是 Java 中使用最广泛的框架之一,因此您应该假设作者已经将性能调整到了预期的水平。
我想指出的另一件事是,Hashtable 类已大部分被 HashMap
取代。类(也使用单独的链接,请参阅 here )。两者之间的主要区别在于 Hashtable
中的所有方法。是同步的,而在 HashMap
中他们不是。当您在单线程环境中运行时,这会带来更好的性能(可能是这个问题的原因?)。
如果您确实需要线程安全的映射实现,那么您应该考虑包装普通的 HashMap
调用 Collections.synchronizedMap()
,或使用 ConcurrentHashMap
.
关于Java哈希表具有单独的链接冲突解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756479/