簡短的LRU cache實現(非最優解)

2022-03-05 08:30:24 字數 651 閱讀 9545

最優解其實jdk中已經有解答,就是linkedhashmap,但自己在限定時間寫的話**量大很難保證不出錯,因此本例直接使用jdk中的hashmap+linkedlist實現。

由於實際使用的是linkedlist儲存最近使用的key,遍歷複雜度為o(n),因此速度並不快,只是更適合面試場合寫

其中主要需要注意list刪除時使用iterator,避免concurrentmodificationexception

class lrucache 

public int get(int key)

}list.add(0, key);

return v;

}public void put(int key, int value) }}

valuemap.put(key, value);

list.add(0, key);

} else

}//新增新增的到佇列頭

list.add(0, key);

valuemap.put(key, value);

} else

}list.add(0, key);

valuemap.put(key, value);}}

}}

js Array操作的最簡短最容易理解方法

array 的方法 1 array.join 把所有元素用符號鏈結成string返回,如果元素不是基本型別,先呼叫tostring.它對應string.split arr 1,2,true,3,4,5 arr.join 1 2 true 3 4 5 2 array.reverse 逆序排列陣列 ar...

LRU Cache的簡單c 實現

lru cache是乙個cache的置換演算法,含義是 最近最少使用 把滿足 最近最少使用 的資料從cache中剔除出去,並且保證cache中第乙個資料是最近剛剛訪問的,因為這樣的資料更有可能被接下來的程式所訪問。lru的應用比較廣泛,最基礎的記憶體頁置換中就用了,對了,這裡有個概念要清楚一下,ca...

LRUCache演算法的簡單實現

lru是least recently used的縮寫,意為最近最少使用演算法。lrucache是一種常用的快取替換演算法,根據使用率淘汰資料,即使用率最小的會被淘汰,通常會用乙個雙向鍊錶來實現,在這個雙向鍊錶中,如果乙個cache被命中,則將這個資料移動到鍊錶的頭部,而不經常使用的cache就會逐漸...