LRU缓存实现
LRU(Least Recently Used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
import java.util.LinkedHashMap;
import java.util.Map;
public class Solution {
//LRU缓存实现
public static void main(String[] args) {
Map<String, String> map = new LinkedHashMap<String, String>(15, 0.75f, true){
@Override
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
for(Map.Entry<String,String> entry : entrySet()){
stringBuilder.append(String.format("%s:%s",entry.getKey(),entry.getValue()));
}
return stringBuilder.toString();
}
@Override
protected boolean removeEldestEntry(Map.Entry<String, String> eldest) {
return size()>5;
}
};
map.put("1", "88");
map.put("2", "88");
map.put("3", "88");
map.put("4", "88");
map.put("5", "88");
map.put("6", "88");
System.out.println(map.toString());
map.put("7", "88");
map.get("3");
map.get("5");
System.out.println(map.toString());
}
}
结果:
2:883:884:885:886:88
4:886:887:883:885:88