前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LinkedHashMap学习

LinkedHashMap学习

作者头像
晓果冻
发布2022-06-17 15:17:21
2010
发布2022-06-17 15:17:21
举报

LinkedHashMap学习

关系图
image-20220412081759428
image-20220412081759428
双向链表
代码语言:javascript
复制
    static class Entry<K,V> extends HashMap.Node<K,V> {
    //after、before 双向链表
        Entry<K,V> before, after;
        Entry(int hash, K key, V value, Node<K,V> next) {
            super(hash, key, value, next);
        }
    }
构造方法
代码语言:javascript
复制
public LinkedHashMap(int initialCapacity, float loadFactor) {
	super(initialCapacity, loadFactor);
	accessOrder = false;
} 
    
public LinkedHashMap(int initialCapacity) {
    super(initialCapacity);
    accessOrder = false;
}   
    
public LinkedHashMap() {
    super();
    accessOrder = false;
}

public LinkedHashMap(Map<? extends K, ? extends V> m) {
   super();
   accessOrder = false;
   putMapEntries(m, false);
}

/*
*一般用此构造方法,accessOrder用来指定是否按顺序访问,如果为true就是按顺序访问,false根据新增排序
*/
public LinkedHashMap(int initialCapacity,
                         float loadFactor,
                         boolean accessOrder) {
    super(initialCapacity, loadFactor);
    this.accessOrder = accessOrder;
}
image-20220412082846866
image-20220412082846866
image-20220412082917933
image-20220412082917933
其他重要方法
实现LRU
代码语言:javascript
复制
package com.example.test.Lru;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author 晓果冻
 * @version 1.0
 * @date 2022/4/12 8:36
 */
public class LruCache<K,V> extends LinkedHashMap<K,V> {
    /**
     * 容量
     */
    private int capacity;

    public LruCache(int capacity) {
        super(capacity,0.75f,true);
        this.capacity = capacity;
    }

    /**
     * 清理头结点
     * @param eldest
     * @return
     */
    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size()>capacity;
    }

    public static void main(String[] args) {
        LruCache<Integer,Integer> map = new LruCache(3);
        map.put(1,1);
        map.put(2,2);
        map.put(3,3);
        //容量达到3,删除最前面的
        map.put(4,4);
        for (Map.Entry<Integer,Integer> entry:map.entrySet()){
            System.out.println("key:"+entry.getKey()+",value:"+entry.getValue());
        }
    }
}
image-20220412084347684
image-20220412084347684
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LinkedHashMap学习
    • 关系图
      • 双向链表
        • 构造方法
          • 其他重要方法
            • 实现LRU
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档