LinkedHashMap继承了HashMap,具有hashMap的所有特性。
- 在插入数据时,LinkedHashMap会执行HashMap插入数据时所有的操作,除此之外,LinkedHashMap还会把新的数据加入到内部的双向链表上。
- LinkedHashMap在遍历所有的元素的时候只需要遍历内部的双向链表。而Hashmap则需要遍历每一个桶(bucket)及桶中的元素,如果数据量比较少,则在这个过程中会扫描到许多空的桶,结果就是HashMap遍历的效率比LinkedHashMap低。
- accessOrder是是否按顺序访问的标志。
accessOrder=false,按照节点插入的顺序遍历。
accessOrder=true,按照节点访问顺序遍历。被访问的节点会被移动到双链表的末尾,可以在此基础上构建一个LRUCache。
accessOrder=true时LRUCache的构建思路。
在这种情况下,被访问的节点会被移动到双链表的末尾,位于链表首端的就是最久未被使用的节点。删除节点时,只需要删除链表首端的节点即可。
网友评论