摘要:
为什么jdk8以后HashMap会使用红黑树优化? 在Jdk1.8版本后,Java对HashMap做了改进,在链表长度超过8且数组长度大于64时,将后面的数据存在红黑树中,以加快检索速度。 为什么是使用红黑树而不是AVL树,AVL树是完全平衡二叉树阿? 在CurrentHashMap中是加锁了的,实 阅读全文
posted @ 2021-04-08 10:21
我是廖志伟
阅读(53)
评论(0)
推荐(0)
摘要:
HashMap为什么会发生并发修改异常?并发修改异常解决方案? HashMap实际使用过程中会出现一些线程安全问题,在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况,开多个线程不断进行put操作,rehash的时候,旧链表迁移新链表的时候,如果在新表的数组索引位置相同,则链表元素会 阅读全文
posted @ 2021-04-08 10:20
我是廖志伟
阅读(92)
评论(0)
推荐(0)
摘要:
HashMap加载因子为什么是0.75 如果加载因子比较大,扩容发生的频率比较低,浪费的空间比较小,发生hash冲突的几率比较大。比如,加载因子是1的时候,hashmap长度为128,实际存储元素的数量在64至128之间时间段比较多,这个时间段发生hash冲突比较多,造成数组中其中一条链表比较长,会 阅读全文
posted @ 2021-04-08 10:19
我是廖志伟
阅读(21)
评论(0)
推荐(0)
摘要:
HashMap扩容机制 将(k1,v1)直接放入Node类型的数组中,这个数组初始化容量是16,默认的加载因子是0.75,也就是当元素加到12的时候,底层会进行扩容,扩容为原来的2倍。 可能引发的问题: HashMap实际使用过程中会出现一些线程安全问题,在JDK1.7中,当并发执行扩容操作时会造成 阅读全文
posted @ 2021-04-08 10:18
我是廖志伟
阅读(28)
评论(0)
推荐(0)
摘要:
HashMap底层原理? HashMap是Map的一个实现类,它是以键值对存储数据的,Key-Value都是Map.Entry中的属性。当我们向HashMap中存放一个元素(k1,v1),先根据k1的hashCode方法来决定在数组中存放的位置。如果这个位置没有其它元素,将(k1,v1)直接放入一个 阅读全文
posted @ 2021-04-08 10:17
我是廖志伟
阅读(18)
评论(0)
推荐(0)
浙公网安备 33010602011771号