chenlijunfan / IndirectAmbition

间接性踌躇满志
0 stars 0 forks source link

2019-07-15 谈谈LinkedHashMap的工作原理 #5

Open chenlijunfan opened 5 years ago

chenlijunfan commented 5 years ago

1、LinkedHashMap继承自HashMap,但是是有序的,默认是插入排序。 2、linkedHashMap内部维护了一张双向链表,所以内存消耗更大。 3、LinkedHashMap扩容时,数据的散列和HashMap是不一样的。HashMap是先遍历旧table,再遍历旧table中每个元素的单向链表,取得Entry以后,重新计算hash值,然后存放到新table的对应位置;LinkedHashMap是遍历的双向链表,取得每一个Entry,然后重新计算hash值,然后存放到新table的对应位置。从遍历的效率来说,遍历双向链表的效率要高于遍历table,因为遍历双向链表是N次(N为元素个数);而遍历table是N+table的空余个数(N为元素个数)。 4、LinkedHashMap是线程不安全的。