您的位置:首页 > 其它

LRU Cache leetcode

2017-09-16 10:52 323 查看
  1.自己想的

  public class LRUCache {
public LinkedList<Integer> used=new LinkedList<Integer>();
public Map<Integer, Integer> map=new HashMap<Integer,Integer>();
public int len;
public int capacity;
public LRUCache(int capacity) {
this.capacity = capacity;
len = 0;
}

public int get(int key) {
if(map.containsKey(key)){
//System.out.println(used.toString());
used.remove((Object)key);
used.addFirst(key);
return map.get(key);
}
else{
System.out.println("没得到的元素:"+key);
return -1;
}
}

public void put(int key, int value) {
if(map.containsKey(key)){
map.put(key, value);
used.remove((Object)key);
used.addFirst(key);
}
else{
if(len<capacity){
used.addFirst(key);
map.put(key, value);
len++;
}
else{

int removedKey=used.getLast();
used.removeLast();
System.out.println("map移除结点:"+removedKey);
map.remove(removedKey);
map.put(key, value);
used.addFirst(key);
}
}
}

}

2.基于LinkedHashMap

public class LRUCache ex
a201
tends LinkedHashMap<Integer,Integer>{

    private int maxcapacity;

    public LRUCache(int capacity) {

        super(capacity,0.75f,true);

        this.maxcapacity=capacity;

    }

    public int get(int key) {

        Integer vaule=super.get(key);

        if(vaule==null)return -1;

        else return vaule;

    }

    public void set(int key, int value) {

        super.put(key,value);

    }

    protected boolean removeEldestEntry(Map.Entry<Integer,Integer> eldest)

    {

        return size()>maxcapacity;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: