0
我目前緩存列表List<CachedObject>
中的DB對象。 CachedObject看起來是這樣的:Java緩存幾個地圖中的對象與一個列表
class CachedObject
{
private int id;
private int id_type;
private int id_other_type;
// getters and setters
}
我目前在該高速緩存中獲取對象的功能
public CachedObject getCachedObjectById(Integer id)
{
for (CachedObject cachedObject : cachedObjectList)
if(id.equals(cachedObject.getId()))
return cachedObject;
return null;
}
public List<CachedObject> getCachedObjectByIdType(Integer idType)
{
List<CachedObject> cachedObjectList = new ArrayList<CachedObject>();
for (CachedObject cachedObject : this.cachedObjectList)
if(idType.equals(cachedObject.getIdType()))
cachedObjectList.add(cachedObject);
return cachedObjectList;
}
由於這是做了很多,這將是更快,加載緩存,在單獨發佈信息時,地圖(在這種情況下爲3):
Map<Integer, CachedObject> cachedObject_to_id
Map<Integer, List<CachedObject>> cachedObjectList_to_idType
Map<Integer, List<CachedObject>> cachedObjectList_to_idOtherType
當獲取對象時,只需從地圖中獲取對象。
EDIT:
在任何不同時間數高速緩存的對象的是20 - 500
你爲什麼不嘗試呢?請記住(我們無法爲您解答)維護多個地圖會增加總體時間,但可能會縮短查找/檢索時間。這對你有影響嗎? –
你在這裏有什麼問題?給我們一個具體的問題,我們可以幫助你。閱讀[如何提問](http://stackoverflow.com/help/how-to-ask) –
緩存對象的數量非常少,以至於使用哪一個並不重要。使用你感覺更舒適的那個。 – Kayaman