Ch01-Java Map 之 HashMap
February 10, 2017
1. 底层数据结构 #
Java 1.7 中使用数组+链表
这样的数据结构,自 Java 1.8 开始使用数组+链表+红黑树
这样的数据结构。
2. 数组扩容 #
resize() 方法用于初始化数组或数组扩容,每次扩容后,容量为原来的 2 倍,并进行数据迁移。
3.线程不安全 #
HashMap 的线程不安全主要体现在下面两个方面:
- 在 Java 1.7 中,当并发执行扩容操作时会造成环形链和数据丢失的情况。
- 在 Java 1.8 中,在并发执行 put 操作时会发生数据覆盖的情况。