LinkedHashMap底层原理
时间: 2023-07-19 17:57:43 浏览: 108
2024Map集合,Stream流,File文件
LinkedHashMap底层是基于哈希表实现的,同时也是基于双向链表实现的。其中,哈希表用来存储键值对,双向链表用来维护键值对的插入顺序。
具体来说,LinkedHashMap内部维护了一个Entry数组,每个Entry包含了键值对的信息,包括key、value、hash等。同时,每个Entry还包含了前后指针,用于维护插入顺序。
在插入一个键值对时,会先根据hash值找到对应的桶,如果桶为空,则直接将Entry插入到该桶中。如果桶不为空,则需要遍历该桶中的所有Entry,找到与新插入Entry的key相同的Entry,如果找到了,则更新该Entry的value,否则将新的Entry插入到链表的尾部。
在访问一个键值对时,会先根据hash值找到对应的桶,然后遍历该桶中的所有Entry,找到与指定key相同的Entry,并返回其value。同时,访问一个键值对时,会将该Entry移动到链表的尾部,以维护插入顺序。
需要注意的是,由于LinkedHashMap采用的是双向链表,因此在遍历或删除键值对时,可以比HashMap更高效。但是,由于需要维护链表,因此LinkedHashMap的内存消耗可能会比HashMap更高。
阅读全文