java基础LinkedHashMap原理

详情见博客这里先记录一下基本原理。
在LinkedHashMapMap中,所有put进来的Entry都保存在如下面第一个图所示的哈希表中,但由于它又额外定义了一个以head为头结点的双向链表(如下面第二个图所示),因此对于每次put进来Entry,除了将其保存到哈希表中对应的位置上之外,还会将其插入到双向链表的尾部。

更直观地,下图很好地还原了LinkedHashMap的原貌:HashMap和双向链表的密切配合和分工合作造就了LinkedHashMap。特别需要注意的是,next用于维护HashMap各个桶中的Entry链,before、after用于维护LinkedHashMap的双向链表,虽然它们的作用对象都是Entry,但是各自分离,是两码事儿。

其中,HashMap与LinkedHashMap的Entry结构示意图如下图所示:

转载于:https://juejin.im/post/5a6f3c4af265da3e3c6c6ca5

你可能感兴趣的:(java基础LinkedHashMap原理)