文章目录
1.创建HashMap对象
HashMap<String, String> map = new HashMap<String, String>();
1.线程不安全的哈希表
2.键值对可以存储null,key不可以重复,value可以重复,重复时覆盖oldVlue
3.取出的数据没有顺序。
2.添加键值对
put方法添加元素时,如果key已经存在,则更新value的值。
存储的key和value都可以为null。
HashMap<String, String> map = new HashMap<String, String>();
map.put("北京", "key存在的oldValue");
map.put("上海", null);
map.put("广州", "oldValue");
map.put(null, "null的oldValue");
map.putIfAbsent(null, "null的newValue");
map.putIfAbsent("杭州", "key不存在的value");
map.putIfAbsent("北京", "key存在的newValue");
map.putIfAbsent("上海", "null值被覆盖");
map.replace("广州", "replaceValue");
map.replace("武汉", "key不存在的value");
replace(key,value);
当key存在时,调用replace方法,会替换value。当key不存在,返回null
@Override
public V replace(K key, V value) {
Node<K,V> e;
if ((e = getNode(hash(key), key)) != null) {
V oldValue = e.value;
e.value = value;
afterNodeAccess(e);
return oldValue;
}
return null;
}
putIfAbsent()当key存在,value有值时不会覆盖value值。
- 首先判断key是否存在,不存在和put的作用一致,更新value。
- 如果存在判断value是否为null,value为null,则更新value值。
- value不为null,则不覆盖,返回原来的value。(null和不存在是两个概念)
put方法源码:
public V put(K key, V value) {
return putVal(hash(key)