是否有一个java Map接口的实现,它利用单独的链接作为冲突解决方案。通过阅读HashMap和HashTable的javadocs,我得出结论:实现所做的工作基本上取代了这个值,并且基本上不采用任何冲突解决方案?单独链接的哈希表
单独链接的哈希表
回答
你弄错了:它使用每个存储桶的条目的链接列表。
当在地图中放置一个值时,地图首先通过调用hashCode
对该键进行转换,然后转换该散列码,使其位于0和桶数之间。如果存储桶是空的,则存储在该存储桶中。如果不是,则将该存储桶中的每个密钥与新密钥equals
进行比较。如果一个是相等的,那么它的值将被新值所取代。否则,带有新密钥的新条目将被添加到存储桶的条目列表中。
如果要为给定密钥存储多个值,请使用Map<Key, List<Value>>
或使用Guava的MultiMap。
看看源代码 - 是的,它使用链接列表。但值得注意的是,有一个TREEIFY_THRESHOLD,如果超过了桶,那么链表将被转换为红黑树。 – manyways
它确实有冲突解决方案,但这是因为两个不同的密钥可能会在哈希后在同一个桶中合理结束。
如果要为单个密钥存储多个值,则始终可以使用HashMap<KeyType, ArrayList<ValueType>>
并在必要时执行一些内务操作以初始化阵列。
检查出番石榴的ListMultimap。它实现了一个'Map
这是一个很好的观点,谢谢。我会记住我的下一个项目。 – Vlad
- 1. 哈希表链接
- 2. 单独的链接哈希表 - 何时停止查找
- 3. 链接在哈希表
- 4. 链式哈希表链接列表
- 5. F#中的哈希链接和.net中的弱哈希表
- 6. 如何用链接实现哈希表?
- 7. Beautifulsoup和哈希链接#
- 8. 具有独立链接冲突解决方案的Java哈希表?
- 9. Ember中的哈希链接href位置
- 10. 哈希表中的链接列表(含结构体)
- 11. 使用哈希表和链接列表的C++访问冲突
- 12. 哈希表 - 链表 - 分段错误
- 13. 如何反向链接哈希映射?
- 14. 从网址抓取哈希链接
- 15. IE火狐VS链接(哈希VS HTM5)
- 16. 向custon js accordion添加哈希链接
- 17. 哈希表vs哈希列表与哈希树?
- 18. 哈希表中的搜索哈希
- 19. 理解哈希表与链接的实现的问题
- 20. 从哈希表中获取链接列表C
- 21. 使用链接列表数组实现哈希表
- 22. 如何用Perl中的哈希链接创建一个简单的HTML表格?
- 23. 简单的方法来转换数据表哈希表或sqldatareader哈希表
- 24. 哈希表直接接入运营商[]
- 25. 将Twitter哈希标签变成链接并链接到可点击的链接
- 26. 链式哈希表:插入功能
- 27. 独特价值哈希值=唯一哈希值?
- 28. 哈希打印表哈希perl
- 29. Java的哈希表
- 30. 段错误在简单的哈希表
可能的重复http://stackoverflow.com/questions/2756479/java-hashtable-with-seperate-chaining-collision-resolution – Manish