甘南州住房和城鄉(xiāng)建設(shè)局網(wǎng)站百度一下就知道百度首頁(yè)
要使用 LinkedHashMap
來(lái)實(shí)現(xiàn)LRU(最近最少使用)緩存,可以設(shè)置它的訪(fǎng)問(wèn)順序?yàn)?code>true,以便在每次訪(fǎng)問(wèn)一個(gè)元素時(shí),將它移到最后,從而實(shí)現(xiàn)LRU的特性。以下是一個(gè)簡(jiǎn)單的Java示例:
import java.util.LinkedHashMap;
import java.util.Map;public class LRUCache<K, V> extends LinkedHashMap<K, V> {private final int MAX_CAPACITY;public LRUCache(int capacity) {super(capacity, 0.75f, true);MAX_CAPACITY = capacity;}@Overrideprotected boolean removeEldestEntry(Map.Entry<K, V> eldest) {return size() > MAX_CAPACITY;}public static void main(String[] args) {LRUCache<Integer, String> lruCache = new LRUCache<>(3);lruCache.put(1, "One");lruCache.put(2, "Two");lruCache.put(3, "Three");System.out.println(lruCache); // 輸出: {1=One, 2=Two, 3=Three}lruCache.get(2); // 訪(fǎng)問(wèn)元素2System.out.println(lruCache); // 輸出: {1=One, 3=Three, 2=Two}lruCache.put(4, "Four"); // 添加一個(gè)新元素// 1最先放入System.out.println(lruCache); // 輸出: {3=Three, 2=Two, 4=Four}lruCache.put(5, "Five"); // 添加一個(gè)新元素// 2先放入但使用了一次,3緊隨其后但沒(méi)有使用System.out.println(lruCache); // 輸出: {2=Two, 4=Four, 5=Five}}
}
在上面的示例中,創(chuàng)建了一個(gè) LRUCache
類(lèi),它擴(kuò)展了 LinkedHashMap
,并在構(gòu)造函數(shù)中設(shè)置了訪(fǎng)問(wèn)順序?yàn)?code>true,以便實(shí)現(xiàn)LRU緩存。重寫(xiě)了 removeEldestEntry
方法,以控制緩存的大小,如果緩存大小超過(guò)最大容量(MAX_CAPACITY
),則會(huì)移除最近最少使用的元素。