在java中向hashmap插入第五项的错误



我有一个有线错误,

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。如果可以,那就是哈希冲突。

最新更新