有這麼一種應用場景:我們需要定時快取一些資料,但又不想占用記憶體太多,所以我們會給快取設定一定的容量大小,如果快取的資料超過了設定的容量,就需要刪除其中一些資料騰出空間來快取新的資料。
那問題來了,刪除掉哪些資料呢,有三種方案:
1,按存入順序,刪除快取中最先存入的資料
2,按使用時間,刪除最長時間沒有使用的資料
3,按使用頻率,刪除一段時間內訪問次數最少的資料
這三種方案就是三種快取演算法,分別為:fifo(first in,first out)、lru(least recently used)、lfu(least frequently used)。
本文使用linkedhashmap實現fifo和lru兩種演算法。
/**
* 快取使用容量超過設定的容量,則刪除最前面的資料
*/public class xcache
public xcache(int cachesize)
public xcache(int cachesize, mode mode)
public void setmode(mode mode)
public void setcachesize(int cachesize)
public void setremovelistener(onremovelistenerremovelistener)
private void init() };}
//把資料放入快取
public synchronized void put(k key, v value)
//從快取中讀取資料
public synchronized v get(k key)
//從快取中主動刪除資料
public synchronized v remove(k key)
@override
public string tostring()
return sb.tostring();
}public enum mode
public inte***ce onremovelistener
}
呼叫示例
public class test
});for (int i = 0; i < 20; i++)
//模擬呼叫
xcache.get("key" + 15);
system.out.println(xcache.tostring());
}}
Android開發中清理webView快取實現
最近負責了個新專案,跟webview相關。可能很多同學不知道機頂盒是什麼?到這就好,不用再深究了,不然話題就跑偏了。webview cache 快取清除 關於android之webview載入網頁快取和清除問題 結合自己實際中的乙個情況,最終下面是我本地的乙個清除webview快取的 實現,如下 t...
Bitmap的高效載入與Android快取
bitmap 1.bitmap是android中的影象處理最重要的類之一 2.通過bitmap能獲取的資訊 3.獲取到資訊後,可對其進行縮放,裁剪等操作 bitmap為我們提供了對影象檔案的操作支援,就像file類提供對檔案的操作支援一樣。bitmap的載入方式 為什麼要高效率的載入bitmap?1...
Java和Android檔案操作
file file dir,string name file string path file string dirpath,string name file uri uri 這些構造方法的實質都是一樣的,就是構造乙個file例項,必須提供乙個完整的檔案路徑。構造了乙個file例項,並不是說就新建了...