static final class HashEntry<K,V> {
final K key;
final int hash;
volatile V value;
final HashEntry<K,V> next;
}
这样导致在remove节点的时候,需要将remove节点的前面节点全部复制一遍,真的好吗?
static final class HashEntry<K,V> {
final K key;
final int hash;
volatile V value;
final HashEntry<K,V> next;
}
这样导致在remove节点的时候,需要将remove节点的前面节点全部复制一遍,真的好吗?
8 回答6.5k 阅读
2 回答3.3k 阅读
3 回答1.8k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
2 回答1.9k 阅读
1 回答896 阅读✓ 已解决
1 回答1.9k 阅读
当发生hash冲突的时候,才会用到链表解决冲突,但是hash冲突的概率很小,map还会自动扩容减少冲突。
对于使用final,java编译器会保证在读final域之前一定被写入过,即保证写在读之前发生,避免多线程并发条件下出现读后写,读到非预期的值。
传送门:java内存模型 final