Java HashMap put() 实现。为什么不先检查参考文献?
2022-09-04 23:25:26
java.util.HashMap
有一个 put方法的实现,里面有以下代码:
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
在上面的代码中,为什么不首先进行引用检查(因为具有相同引用的两个对象将具有相同的哈希和 equals())?
即类似这样的东西:
if ((k = e.key) == key) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
} else if ( compare hash and equals) {
// do something again with the value
}
这难道不会节省一个比较吗?