Java和Android中的快取演算法

2021-08-14 11:06:07 字數 1272 閱讀 7378

有這麼一種應用場景:我們需要定時快取一些資料,但又不想占用記憶體太多,所以我們會給快取設定一定的容量大小,如果快取的資料超過了設定的容量,就需要刪除其中一些資料騰出空間來快取新的資料。

那問題來了,刪除掉哪些資料呢,有三種方案:

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例項,並不是說就新建了...