如何避免不同HashMap对象之间的冲突



我发现HashMaps计算哈希用于性能优化。他们使用hashCode((将Keys划分为不同的bucket,并使用equals((在这些bucket中进行进一步比较。

然而,我找不到如何避免不同HashMap对象之间冲突的解释。

目前的理解:

  1. 不同的对象可以具有相同的哈希
  2. 因此,不同的Map Key可能最终会出现在同一个bucket中
  3. 不同映射的键也可以具有相同的哈希
  4. 因此,独立贴图对象的关键帧也可能最终出现在同一个bucket中

如果假设3和4是正确的,不同的哈希映射是否可能意外地覆盖其他值?或者检索属于错误映射的值?

如何避免这种情况?

例如

哈希映射<MyKey,值>map1=新的HashMap<gt;((;

哈希映射<MyKey,值>map2=新的HashMap<gt;((;

map1和map2的MyKey值最终会在同一个bucket中吗?

map2而不是它自己的值是否可以开始检索map1的值?

不同的HashMap对象不共享bucket。

您的项目#2应更改为";相同CCD_ 2的不同映射密钥可以最终在相同的桶中";和#4是直接错误的,因为每个HashMap都有自己的桶阵列来使用,这完全独立于任何其他HashMap的功能。

最新更新