[Jakarta Commons] 使用LRUMap
使用過開源緩存包(如:EHCache)都知道,緩存策略中主要分為FIFO,LRU,LFU等幾種。而Jakarta Commons中提供的 org.apache.commons.collections.map.LRUMap 可用來保存最近使用的幾條記錄,提供了LRU(Least Recently Used)緩存策略的實現。
具體使用方法如下:
import
?java.util.Map;
import
?org.apache.commons.collections.map.LRUMap;

LRUMap cache?
=
?
new
?LRUMap(
5
?);?????

//
?Populate?the?cache?with?5?stock?prices
cache.put(?
"
MSFT
"
,?
new
?Float(?
0.03
?)?);
cache.put(?
"
TSC
"
,?
new
?Float(?
0.001
?)?);
cache.put(?
"
LU
"
,?
new
?Float(?
23.30
?)?);
cache.put(?
"
CSCO
"
,?
new
?Float(?
242.20
?)?);
cache.put(?
"
P
"
,?
new
?Float(?
10.23
?)?);
?????
//
?Now?use?some?of?the?entries?in?the?cache
Float?cscoPrice??
=
?(Float)?cache.get(?
"
CSCO
"
?);
Float?msPrice?
=
?(Float)?cache.get(?
"
MSFT
"
?);
Float?tscPrice?
=
?(Float)?cache.get(?
"
TSC
"
?);
Float?luPrice?
=
?(Float)?cache.get(?
"
LU
"
?);
Float?pPrice?
=
?(Float)?cache.get(?
"
P
"
?);
Float?msPrice2?
=
?(Float)?cache.get(?
"
MSFT
"
?);
??
//
?Add?another?price?to?the?Map,?this?should?kick?out?the?LRU?item.
cache.put(?
"
AA
"
,?
new
?Float(?
203.20
?)?);
此時,緩存中的元素為:
[CSCO]
[MSFT]
[TSC]
[LU]
[P]
[AA]
由于LRU最近沒有被訪問,所以當AA加入時,由于超過了緩存的最大容量(5),所以被剔除了緩存.
具體使用方法如下:






















[CSCO]
[MSFT]
[TSC]
[LU]
[P]
[AA]
由于LRU最近沒有被訪問,所以當AA加入時,由于超過了緩存的最大容量(5),所以被剔除了緩存.
posted on 2006-07-31 14:52 zJun's帛羅閣 閱讀(2932) 評論(1) 編輯 收藏 所屬分類: 開發環境