LRUMap 是一個暫存容器, 有點像Key value pair.
也可以是
Map<Object, Object>
註: LRUMap 屬於非同步處理, 執行緒安全.
可以在一開始給定容器大小, 然後給予值.
超過大小則會把最早寫入的清掉. 把新的元素替換.
public static void main(String[] args) {
LRUMap map = new LRUMap(3);
map.put("1", 1);
map.put("2", 2);
map.get("1");
map.put("3", 3);
map.put("4", 4);
for(Iterator it = map.entrySet().iterator();it.hasNext();){
System.out.println(it.next());
}
}
最後輸出的結果會是
1=1 3=3 4=4 |
最初的 2 因為陣列超過大小, 被淘汰掉.
1 則是因為在2存入後有被叫用, 所以更新了淘汰順序.
另外若想同步處理,
則可以這樣宣告.
import java.util.Collections;
import java.util.Map;
import org.apache.commons.collections.map.LRUMap;
public class LRUSample {
private static final int MAX_CAPACITY = 5;
public static void main(String[] args) {
Map<Integer, String> lruMap = (Map<Integer, String>) Collections.synchronizedMap(new LRUMap(MAX_CAPACITY));
for(int i = 0; i < 30; i++) {
String string = "Entry " + (i + 1);
lruMap.put(i, string);
System.out.println(lruMap.toString());
}
}
}