java hashmap怎么遍历冲突的部分

比如
put(1,"a");
put(2,"b");
put(2,"c");
普通遍历的话只能得到a和c,我现在想遍历出a,b,c,请问~

第1个回答  2014-06-13
大家都知道map的key值是不可以重复的,重复会覆盖哦。
不过你的问题有个取巧的方法,就是不用int数字做key,而是新建string对象做key,这样内存地址不同的话,是可以重复的。
Map map = new IdentityHashMap();
map.put(new String("1"), "a");
map.put(new String("1"), "b");
System.out.println(map);
输出{1=a, 1=b}。
补充,其实用 IdentityHashMap的话,不用string,new Integer新建对象也是可以的。
第2个回答  2014-06-13
HashMap 的Key值是不能重复的,所以不管怎么遍历,都不会把c遍历出来的,或者您把c的Key换成3,那就可以了追问

key值冲突的时候不是把value存到一个链里了么,不是直接覆盖啊

追答

它会把原来的覆盖的,Key -- Value ,肯定是一对一的,不可能一对多的呀

可以参与一下以下HashMap的源码


本回答被提问者采纳
第3个回答  2014-06-13
你的key相同啊,相同的key会覆盖啊
相似回答