繁体   English   中英

如果 ArrayMap 或 SparseArray 中键的散列冲突怎么办?

[英]What if there is conflict of hashing of keys in ArrayMap or SparseArray?

我已经阅读了许多关于数组映射和稀疏数组的博客,其中每个地方我都得到了

ArrayMap 包含两个小数组而不是 HashMap 中的一个。 第一个数组 (Hash-Array) 按排序顺序包含指定的哈希键。 第二个数组(Key Value Array)根据第一个数组存储对象的键和值。 以下链接供参考https://android.jlelse.eu/app-optimization-with-arraymap-sparsearray-in-android-c0b7de22541a

但是,如果我在数组映射中的两个不同键的哈希码与哈希映射中的相同,那么如果我在哈希映射中具有相同的哈希码,会发生什么情况,如果具有相同的键哈希(冲突),它会在给定的链表中附加键值对下一个项目的桶位置。

与 ArrayMap 中发生哈希冲突时的 hashMap 不同,它不是将给定桶位置的键值对附加到链表中,而是将下一项的值放在第二个数组中的下一个可用位置。 对于搜索,当发生哈希冲突时,它会遍历第二个数组,直到找到所需的值

在提供的文档中对其进行了描述:

当我们获取一个项目时,会在 Hash-Array 上进行二分搜索以找到匹配的哈希索引,然后直接从第二个数组(键值数组)中返回键值对。 如果第二个数组(键值数组)中的键不匹配,则在第二个数组(键值数组)上进行线性遍历以解决冲突。

暂无
暂无

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

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