package com.mbt.model;
import java.io.Serializable;
public class Book implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6795282145467512419L;
private String id;
private String name;
private String version;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", version=" + version + "]";
}
}
适用于内存缓存和类似的场景,使用起来简便,经历了几个版本修改,才形成目前的版本,如果你觉得对你有帮助的话,别忘记顺手点一下赞哦
package com.mbt.cache.lru;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import com.mbt.model.Book;
/**
*
* @author shixiang.chen
* @version 1.3
*/
public class CustLruCache<T> {
// 用final确保Map只能被初始化一次
private final Map<String, T> store;
/**
*
* @param max 缓存容器最多能存储元素的个数
*/
public CustLruCache(final int max) {
this.store = new LinkedHashMap<String, T>() {
/**
*
*/
private static final long serialVersionUID = 5187480909428897274L;
/**
* removeEldestEntry方法, 如果返回true, 它允许map通过删除过期条目来减少内存消耗。
*/
@Override
protected boolean removeEldestEntry(Entry<String, T> eldest) {
return size()>max;
}
};
}
public void put(String key, T value) {
synchronized (store) {
store.put(key, value);
}
}
public T get(String key) {
synchronized (store) {
return store.get(key);
}
}
public Set<String> keySet() {
synchronized (store) {
return store.keySet();
}
}
//
public static void main(String[] args) {
Book b1 = new Book();
b1.setId("001");
b1.setName("三国演义");
Book b2 = new Book();
b2.setId("002");
b2.setName("西游记");
Book b3 = new Book();
b3.setId("003");
b3.setName("红楼梦");
CustLruCache<Book> cache = new CustLruCache<Book>(3);
cache.put("a", b1);
cache.put("b", b2);
cache.put("c", b3);
Set<String> keySet = cache.keySet();
for(String k : keySet) {
Book book = cache.get(k);
System.out.println(book.toString());
}
/**
* Book [id=001, name=三国演义, version=null]
Book [id=002, name=西游记, version=null]
Book [id=003, name=红楼梦, version=null]
*/
System.out.println("---------- 超出了最大值 ----------");
Book b4 = new Book();
b4.setId("004");
b4.setName("水浒传");
cache.put("d", b4);
for(String k : keySet) {
Book book = cache.get(k);
System.out.println(book.toString());
}
/**
* 结果id为001的对象被删除了
* Book [id=002, name=西游记, version=null]
Book [id=003, name=红楼梦, version=null]
Book [id=004, name=水浒传, version=null]
*/
}
}