java hashmap 的数据结构浅析

看了很多关于hashmap的博文后, 对hashmap有了一个比较粗浅的了解.

在java8中 hashmap的存储结构是: 数组+链表+红黑树

 

 

查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 O(n)。

为了降低这部分的开销,在 Java8 中,当链表中的元素超过了 8 个以后,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为 O(logN)。

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

 

posted @ 2018-04-12 10:52  YanyuWu  阅读(1026)  评论(0)    收藏  举报