我发现HashMaps计算哈希用于性能优化。他们使用hashCode((将Keys划分为不同的bucket,并使用equals((在这些bucket中进行进一步比较。
然而,我找不到如何避免不同HashMap对象之间冲突的解释。
目前的理解:
- 不同的对象可以具有相同的哈希
- 因此,不同的Map Key可能最终会出现在同一个bucket中
- 不同映射的键也可以具有相同的哈希
- 因此,独立贴图对象的关键帧也可能最终出现在同一个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
的功能。