繁体   English   中英

Clojure地图限制和一致性

[英]Clojure map limits and consistency

我想知道,考虑到Clojure使用32位散列进行映射实现,如果Clojure映射因此限制为2 ^ 32-1个键(如果不是这样,它如何管理冲突)以及它是否进行散列实施是一致的 TIA!

Clojure映射是一种持久 且不可变的自定义实现(即它不使用Java哈希映射,当在不可变数据结构中使用时,它不能提供足够的性能)。

它使用32位哈希码,因此有2 ^ 32个可能的哈希桶 在冲突的情况下,键和值存储在每个哈希桶的数组中,因此可以有超过2 ^ 32个键 请参阅PersistentHashMap源 - 特别是HashCollisionNode内部类用于存储针对单个哈希码值的一桶键/值。

由于可能的散列桶的数量是固定的,因此一致的散列是无关紧要的 - 密钥永远不需要重新映射。

也可以看看:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM