https://blog.csdn.net/love_java_cc/article/details/56674401
首先,看一下源码:
public V put(K paramK, V paramV) {if (paramK == null) {return putForNullKey(paramV); }int i = hash(paramK.hashCode());int j = indexFor(i, this.table.length);for (Entry localEntry = this.table[j]; localEntry != null; localEntry = localEntry.next) { Object localObject1;if ((localEntry.hash == i) && (((localObject1 = localEntry.key) == paramK) || (paramK.equals(localObject1)))) {Object localObject2 = localEntry.value; localEntry.value = paramV; localEntry.recordAccess(this);return localObject2; } }this.modCount += 1; addEntry(i, paramK, paramV, j);return null; }
好吧,看不懂没关系,下面看例子:
import java.util.HashMap;import java.util.Map;public class Test {public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>();String p1 = map.put("11", "22"); System.out.println("p1:" + p1);String p2 = map.put("33", "44"); System.out.println("p2:" + p2);String value1 = map.get("11"); System.out.println("value1:" + value1);String p3 = map.put("11", "44"); System.out.println("p3:" + p3);String value2 = map.get("11"); System.out.println("value2:" + value2); }}
输出结果:
p1:nullp2:nullvalue1:22p3:22value2:44
说明:put方法返回值为null或者value;
如果key没有重复,put成功,则返回null,如p1、p2;
如果key重复了,返回的是map.get(key),也就是当前这个key对应的value,如上面的p3,key="11",而p1的key也是"11",p1与p3重复,返回的是p1的value="22",并且将p3覆盖掉p1