我有一个有线错误,
HashMap map =new HashMap<String, String> ()
i add items to map, (map start with size 2)
table HashMap$HashMapEntry[2] (id=830028484912)
[0] null
[1] null
添加2个物品后,将增长映射为4,看起来像
table HashMap$HashMapEntry[4] (id=830055921064)
[0] HashMap$HashMapEntry (id=830055921104)
[1] null
[2] HashMap$HashMapEntry (id=830055922960)
[3] null
再添加2项(总共4项)后,它看起来像
table HashMap$HashMapEntry[4] (id=830055921064)
[0] HashMap$HashMapEntry (id=830055921104)
[1] HashMap$HashMapEntry (id=830055930192)
[2] HashMap$HashMapEntry (id=830055922960)
[3] HashMap$HashMapEntry (id=830055933488)
添加第五项后,它应该增长到8,包含5项,但它只包含4项
table HashMap$HashMapEntry[8] (id=830055946352)
[0] null
[1] HashMap$HashMapEntry (id=830055930192)
[2] HashMap$HashMapEntry (id=830055922960)
[3] HashMap$HashMapEntry (id=830055946408)
[4] HashMap$HashMapEntry (id=830055921104)
[5] null
[6] null
[7] null
i使用put插入项,当所有键和值都不同时,
我找到了一个解决方案,但它是一个坏的,重新配置哈希映射以更多的项目开始,然后我放,例如在这种情况下,任何项目超过5将适合,但我使它成为基础设施的一部分,我不想限制它,我希望它在需要时增长。
很可能发生了哈希冲突,并且您看到上面列出的HashMapEntry
之一包含对下一个HashMapEntry
的引用,如下所示:
table HashMap$HashMapEntry[8]
[0] null
[1] HashMap$HashMapEntry
[2] HashMap$HashMapEntry
[3] HashMap$HashMapEntry -> HashMap$HashMapEntry
[4] HashMap$HashMapEntry
[5] null
[6] null
[7] null
请测试您是否可以get
所有已put
的5个条目进入HashMap
。如果可以,那就是哈希冲突。