Collision是Java中的Hashmap集合

时间:2014-07-25 17:07:00

标签: java hashmap

我想知道一旦Key相同,Hashmap就会处理该值。我使用put方法插入2个具有相同键的元素。 如果没有值,则返回null,否则返回支持的私有值。 hashMap不会为同一个Key存储多个值

public class geekarray {
    HashMap<Integer, String> a ;
    geekarray(){
        a= new HashMap<Integer,String>(10);

        System.out.println(a.put(1, "yogi"));
        System.out.println(a.put(1, "yogi2"));
        System.out.println(a.put(2, "yogi3"));
    }
    public static void main(String s[]){
        geekarray a = new geekarray();

    }
}

输出: -

null
yogi
null

4 个答案:

答案 0 :(得分:1)

没有。 HashMap仅为每个键存储一个值(唯一),旧值将被新值覆盖。如果您对每个键存储多个值感兴趣,可以查看Apache Common Utils MultiMap

答案 1 :(得分:0)

它不会为同一个密钥存储多个值。新值替换旧值。

  

将指定的值与此映射中的指定键相关联。如果地图以前包含该键的映射,则将替换旧值

Source

至于返回值:

  

与key关联的上一个值,如果没有key的映射,则返回null。 (null返回也可以指示映射先前将null与key关联。)

答案 2 :(得分:0)

不,HashMap不会为同一个密钥存储多个值。正如documentation所说,

If the map previously contained a mapping for the key, the old value is replaced. 

答案 3 :(得分:0)

根据Java 7文档:

  

如果地图以前包含该键的映射,则为旧值   被替换了。

所以你只能为每个键放一个值。任何额外的看跌期权都将覆盖现有价值。

http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html#put(K,%20V)