Java哈希表具有单独的链接冲突解决方案?

标签 java hashtable collision

我已经使用内置的 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/

相关文章:

java - iFrame没有source属性但嵌入html标签

c - 动态哈希表调整大小中的立即复制与增量复制

c# - 集合已更改。未执行可能的盘点操作

java - 如何在数据库中检索唯一 ID 键

java - java中的图像平均阈值

java - 无法从java中的另一个类调用方法

vb.net - 迭代 Hashtable 并有条件地删除 VB.NET 中的条目的最佳方法

Perl unless 散列声明中的语句 - 这可能吗?

c++ - 与二维数组中的 .bmp 的简单碰撞?

sockets - 来自广播节点的 UDP 冲突是否可能?