是否有任何靜態大小哈希表的實現將條目限制爲最新或最常用的元數據?我不想自己跟蹤這些信息。我知道大多數緩存組件都會跟蹤這一點,但我寧願不會引入很多新的依賴關係。經常使用的元數據哈希表
回答
可以使用使用LinkedHashMap
標準JDK庫構建LRU緩存:
public class MyLRUCache<K, V> extends LinkedHashMap<K, V> {
private final int maxEntries;
public MyLRUCache(int maxEntries) {
// you can be a bit fancy with capacity and load factor
super(16, 0.75, true);
this.maxEntries = maxEntries;
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > maxEntries;
}
}
您可能希望與WeakReference
S以及玩。
使用LinkedHashMap和覆蓋removeEldestEntry,並確保使用 constructor,允許accessOrder as true
Accessordered使得地圖中刪除最近最少訪問的項目,而不是大。
所有查詢都會改變地圖的結構,因此會慢一點。
實施例:
public AccesOrderedLRUCache<V,K> extends LinkedHashMap<V,K>{
private final m_capacity;
public AccesOrderedLRUCache(int capacity) {
super(0.75*capacity, 0.75, true);
m_capacity = capacity;
}
@Override
protected boolean removeEldestEntry (Map.Entry<K,V> eldest) {
return size() > getCapacity();
}
public int getCapacity() {
return m_capacity;
}
}
不在jdk 1.6.0_13中。 http://kickjava.com/src/java/util/LinkedHashMap.java.htm(不知道是哪個版本,但仍然沒有) – Fedearne 2009-11-06 19:01:40
@Fedearne,謝謝。我混淆了訪問按訂單排序 – notnoop 2009-11-06 19:09:02
0.75 *容量可能不是你在這裏的意思。假設你實際上意味着容量/ 0.75? 另外getCapacity缺少一個parens,我寧願在removeEldestEntry()中將m_capacity改爲LRUCache.this.cacheSize。 – 2009-11-09 19:05:32
- 1. 在yara中使用哈希元數據
- 2. 在jsp中顯示使用數據表的哈希表數據
- 3. 構建數據結構 - 哈希數組的哈希哈希
- 4. 哈希表和類數據
- 5. 使哈希鍵與哈希常數的順序匹配
- 6. 經典哈希點符號哈希
- 7. 使用哈希表的數組列表
- 8. 哈希表鍵語法來引用嵌入哈希表元素
- 9. 使用哈希表的PowerShell
- 10. PowerShell的:使用哈希表
- 11. 如何保持哈希表中哈希表元素的順序
- 12. Perl訪問哈希/哈希引用數據結構中的元素
- 13. 計算哈希表中使用的數據桶的數量
- 14. 簡單的方法來轉換數據表哈希表或sqldatareader哈希表
- 15. PHP - 哈希使用數據庫無法正常工作
- 16. 使用相同的哈希碼和類似的數據比較兩個哈希集/數據列表
- 17. 使用Django的密碼哈斯已經哈希密碼
- 18. 使用哈希處理數據
- 19. 紅寶石哈希使用數據庫
- 20. 哈希表的數據排序
- 21. 哈希中的基因表達數據
- 22. 使用C++將哈希表複製到另一個哈希表
- 23. 爪哇 - 經歷一個哈希表
- 24. 使用數組作爲哈希表
- 25. 使用Rails中的哈希未經允許的參數
- 26. 紅寶石哈希使用rjb的java哈希表
- 27. 使用哈希
- 28. MySQL數據庫的哈希
- 29. 哈希表vs哈希列表與哈希樹?
- 30. 使用SQL查詢結果中的主鍵創建哈希表的哈希表作爲哈希表鍵值
我喜歡這樣。我以前沒有聽說過。 – monksy 2009-11-06 17:47:43
希望我在之前瞭解WeakReferences。這會讓這個緩存機制在我工作時更加棒。 – monksy 2011-10-19 18:14:07