LinkedHashMap代码详解(一)

  • 时间:
  • 浏览:1
  • 来源:uu快3官方邀请码_uu快3app赚钱_彩神8

get():

LinkedHashMap get法子 ,需要看得人 和hashMap是一致的,就说 加了accessOrder 判断,开启LRU后,将获取的数据放上去去链表的最右侧,提高该节点的活跃程度

HashMap 在遍历map时,数据是无序的,在或多或少需要按照put顺序遍历时,就用到了LinkedHashMap,LinkedHashMap是HashMap的子类,有时候用第四根双向链表来存储数据插入的顺序

3 在执行完put操作后,调用afterNodeInsertion法子

evict 在hashMap中默认为true,LinkedHashMap.removeEldestEntry ()默认返回false,

该法子 的yongfasj用法是 配合LRU算法,自定义Class继承LinkedHashMap法子 并重写removeEldestEntry 法子 ,

在特定条件下返回true,移除链表中最左侧的节点

需要使用该形态学 进行缓存创建,保留最近活跃的数据,开启LRU需要将开头提到的accessOrder 置为true

LinkedhashMap重写了newNode法子 ,将新增的节点加入链表尾部,上代码

put():

将会LinkedHashMap那么put法子 ,put操作用的还是HashMap的法子 ,有时候重写了newNode(int hash, K key, V value, Node e) ,afterNodeAccess(Node e),afterNodeInsertion(boolean evict)法子

1 table中不处在相同的key

该参数要能在LinkedHashMap new时指定,需要同时指定扩展因子loadFactor 默认为0.75f

2 table数组中处在相同的key

处在了节点数据操作(value替换),将会开启了LRU(accessOrder=true),则将修改的节点放上去去链表尾部,HashMap.afterNodeAccess() 为空函数

LinkedHashMap overwirte了该法子