成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

java實現(xiàn)lru算法 android里面lrucache算法為什么用雙向鏈表實現(xiàn)?

android里面lrucache算法為什么用雙向鏈表實現(xiàn)?LRU是通過雙向鏈表和映射實現(xiàn)的,在Java中也是通過雙向鏈表實現(xiàn)的。通過JDK中的LinkedHashMap很容易實現(xiàn)lrucache。將

android里面lrucache算法為什么用雙向鏈表實現(xiàn)?

LRU是通過雙向鏈表和映射實現(xiàn)的,在Java中也是通過雙向鏈表實現(xiàn)的。通過JDK中的LinkedHashMap很容易實現(xiàn)lrucache。

將最近訪問的元素放在鏈表的一端,如果容量達到限制,則從另一端刪除該元素

1。Linkedhashset繼承自hahsset。構造方法使用HashSet的三個參數(shù)調用該方法。此構造方法的底層將初始化LinkedHashMap。因為LinkedHashMap是有序的,所以linkedhashset也是有序的。為什么我們不能調用這個構造函數(shù)?它是包訪問級別,不能在外部調用。接下來,分析LinkedHashMap是如何實現(xiàn)的,以理解為什么它是有序的。

2. 先看下面的圖片。(對于寫在手機上的問題,你不能把圖片放在文字里,它們都在下面。)。

LinkedHashMap的數(shù)據(jù)結構與HashMap不同。HashMap中的條目有四個屬性:key、value、hash和next,而LinkedHashMap中的條目添加了before和after屬性。因此,LinkedHashMap在HashMap的基礎上使用雙向鏈表來連接所有節(jié)點。當然,它也有一個頭部節(jié)點,所以遍歷可以有序進行。具體結構如圖所示。

3. LinkedHashMap主要重寫addentry和createentry方法,在創(chuàng)建節(jié)點時創(chuàng)建雙向鏈表。

此外,LinkedHashMap還可以實現(xiàn)LRU算法的緩存。

源代碼基于JDK7查看ha。如果你不懂HashMap,你可以看到我分享的另一篇文章。

希望對您有所幫助,您可以關注我,以后會分享更多的架構和java知識文章。