java hashmap 的数据结构浅析
看了很多关于hashmap的博文后, 对hashmap有了一个比较粗浅的了解.
在java8中 hashmap的存储结构是: 数组+链表+红黑树


查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 O(n)。
为了降低这部分的开销,在 Java8 中,当链表中的元素超过了 8 个以后,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为 O(logN)。

concurrent hashmap是线程安全的, 同时还实现了并发. 在每个segment内部有锁, 并发性提现在同时操作多个segment.

浙公网安备 33010602011771号