首页 > 面试被问到linkedhashmap,赶紧背这几条!
头像
cathy_cathy
编辑于 2021-08-05 10:22
+ 关注

面试被问到linkedhashmap,赶紧背这几条!


美团到店事业群-平台技术部 校招预备队qq群 821133476
入群第一时间获知校招岗位开放信息,第一时间获知补录岗位开放信息,快人一步!
内推二维码:
https://www.cnblogs.com/CATHY-MU/p/15102097.html
如果对应岗位还没开放,可以先 加群 821133476等第一时间通知

其他文章:
面试被问到.class文件结构,赶紧背这几条!
https://www.nowcoder.com/discuss/684230?source_id=profile_create_nctrack&channel=-1
面试被问到jdk监控工具,赶紧背这几条!
https://www.nowcoder.com/discuss/685100?source_id=profile_create_nctrack&channel=-1
面试被问到操作系统,赶紧背这几条!
https://www.nowcoder.com/discuss/686243?source_id=profile_create_nctrack&channel=-1
面试被问到垃圾回收,赶紧背这几条!
面试被问到散列表,赶紧背这几条!
面试被问到内存管理,赶紧背这几条!

面试被问到arraylist,赶紧背这几条!

面试被问到hashmap,赶紧背这几条!


https://www.imooc.com/article/22931
LinkedHashMap 在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。

LinkedHashMap 内部类 Entry 继承自 HashMap 内部类 Node,并新增了两个引用,分别是 before 和 after。这两个引用用于维护双向链表。

linkedHashMap的插入和删除方法都是直接食用的父类的实现,但是父类的方法不会把节点插入链表或从链表中删除,怎么办呢,hashMap有三个after开头的方法,在插入、删除节点之后会执行after开头的方法,linkedHashMap可以通过覆写after开头的方法,实现把节点插入链表或从链表中删除。

void afterNodeAccess(Node<K,V> p) { } void afterNodeInsertion(boolean evict) { } void afterNodeRemoval(Node<K,V> p) { }

默认情况下,linkedHashMap按插入顺序维护链表。在初始化linkedHashMap时可以设置按照访问顺序维护链表。当调用get/getOrDefault/replace等方法时,这些方***调用afterNodeAccess将访问的节点移动到链表的尾部。

linkedHashMap实现缓存
在afterNodeInsertion方法里会通过afterNodeInsertion方法判定是否要移除最近使用最少的节点。通过覆写afterNodeInsertion可以制定不同的lru(Least Recently Used)缓存策略。


全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐