最近在leetcode上作題的時,看到了一道有關LRU Cache的題目,正好我當初面試阿里巴巴的時候問到的。主要採用linkedHashMap來實現。java
package edu.test.algorithm; import java.util.LinkedHashMap; public class LRUCache { LinkedHashMap<Integer,Integer> linkedHashMap; int capacity; public LRUCache(int capacity) { linkedHashMap=new LinkedHashMap<Integer, Integer>(capacity); this.capacity=capacity; } public int get(int key) { if(linkedHashMap.containsKey(key)){ int value=linkedHashMap.get(key); linkedHashMap.remove(key); linkedHashMap.put(key, value); return value; } return -1; } public void set(int key, int value) { if(linkedHashMap.containsKey(key)){ linkedHashMap.remove(key); } else if(linkedHashMap.size()>=capacity){ linkedHashMap.remove(linkedHashMap.keySet().iterator().next()); } linkedHashMap.put(key, value); } }