首页IT科技linkedhashmap的数据结构(LinkedHashSet和LinkedHashMap手记)

linkedhashmap的数据结构(LinkedHashSet和LinkedHashMap手记)

时间2025-09-17 06:10:23分类IT科技浏览5259
导读:LinkedHashSet和LinkedHashMap 这两个类维护一个双向链表,可以记住插入元素的顺序。...

LinkedHashSet和LinkedHashMap

这两个类维护一个双向链表                  ,可以记住插入元素的顺序                。

实例:LinkedHashMap

可以使用访问顺序来迭代处理映射条目                         ,当get或者put访问元素时        ,受影响的条目从当前位置删除             ,然后放到末尾                          ,只影响链表            ,不影响散列表的桶                          。

LinkedHashMap<K,V>(initialCapacity, loadFactor,true) //构造访问顺序迭代处理的Map

这样的好处是        ,可以保持                ”最近最少使用原则“                          ,这样当容器满的时候可以通过覆盖removeEldestEntry来删掉前面的很少使用的缓存                ,         。

// 定义一个容量为10    ,装填因子为0.75                          ,访问顺序的cache                    , // 当size/容量>装填因子时,散列表就会再次散列            。 var cache = new LinkedHashMap<String,Integer>(10, 0.75F, true){ // 复写该方法                      ,则会删除掉Map中最不常访问的元素                         。 protected boolean removeEldestEntry(Map.Entry<String,Integer> eldest){ // 当容器的内容>5时删掉最不常访问的元素 return size() > 5; } }; cache.put("zs", 1); cache.put("ls", 2); cache.put("ww", 2); cache.put("zs",3); // 对张s进行覆盖                        ,则会出现在最后访问之后 cache.forEach((k,v)->{ System.out.println(k+":"+v); }); /* ls:2 ww:2 zs:3 */ System.out.println("================"); cache.put("ml", 1); cache.put("zl", 3); cache.forEach((k,v)->{ System.out.println(k+":"+v); }); /*此时Map的size已经到5    ,添加一个元素后                  ,将最不常访问到的第一个元素删除 ls:2 ww:2 zs:3 ml:1 zl:3 */ System.out.println("***************"); cache.put("lll", 4); cache.forEach((k,v)->{ System.out.println(k+":"+v); }); /* ww:2 zs:3 ml:1 zl:3 lll:4 */

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
如何进行关键词分析(如何进行关键词分析) 重启计算机cmd命令(reboot命令 – 重新启动计算机)