假设这样一个情况,我们对一个hashmap进行get操作,得到其value值temp,然后对temp进行修改,这个hashmap中的value值,是否跟着也发生了变化。
public V get(Object key) {
Node<K,V> e;
return (e = getNode(hash(key), key)) == null ? null : e.value;
}
首先看源码,直接返回了一个新定义的e的e.value这个值,
有如下测试结果:
可以看到,这里的值仍为1,也就是没有发生改变,所以在get的值上进行操作不会直接改变map的key值,
要改变map的key值,要用put操作对其进行覆盖。