當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java LinkedHashMap removeEldestEntry()用法及代碼示例


使用Java中的java.util.LinkedHashMap.removeEldestEntry()方法來跟蹤Map是否從Map中刪除了最老的條目。因此,每次將新元素添加到LinkedHashMap時,最舊的條目都會從Map中刪除。通常在使用put()和putall()方法將元素添加到Map中之後調用此方法。

此方法允許Map按照其返回值的指示修改自身。盡管允許該方法直接修改Map,但如果這樣做,它必須返回false,這表明該Map不應嘗試任何進一步的修改而導致歧義的事實。未指定從此方法修改映射後返回true的效果。

當映射表表示一個高速緩存時,此函數非常有用,在該高速緩存表中,它允許映射表通過依次刪除陳舊條目來減少內存消耗。
用法:


private boolean removeEldestEntry(Map.Entry eldest)

參數:該方法接受一個最老的參數,該參數表示映射中最近插入的條目。如果映射具有訪問順序,則最舊引用最近訪問最少的條目,如果此方法返回true,則將其刪除。如果在put或putAll調用之前映射為空,則這將是剛剛插入的條目;換句話說,如果Map包含單個條目,則最舊的條目也是最新的條目。

返回值:如果將最舊的條目從映射中刪除,則映射返回true;如果不刪除或保留該條目,則返回false。

下麵的程序用於說明java.util.LinkedHashMap.removeEldestEntry()方法的用法:

// Java program to illustrate removeEldestEntry() 
import java.util.*; 
  
public class Linked_Hash_Map_Demo { 
  
    // Refers to the max size of the map following which 
    // the removal takes place of the eldest entry 
    private static final int MAX = 6; 
  
    public static void main(String[] args) 
    { 
  
        // Creating the linked hashmap and implementing 
        // removeEldestEntry() to MAX size 
        LinkedHashMap<Integer, String> li_hash_map =  
        new LinkedHashMap<Integer, String>() { 
            protected boolean removeEldestEntry(Map.Entry<Integer, String> eldest) 
            { 
                return size() > MAX; 
            } 
        }; 
        // Adding elements using put() 
        li_hash_map.put(0, "Welcome"); 
        li_hash_map.put(1, "To"); 
        li_hash_map.put(2, "The"); 
        li_hash_map.put(3, "World"); 
        li_hash_map.put(4, "Of"); 
        li_hash_map.put(5, "geeks"); 
  
        System.out.println("" + li_hash_map); 
  
        // Adding more elements 
        li_hash_map.put(6, "GeeksforGeeks"); 
  
        // Displying the map after adding one more element 
        System.out.println("" + li_hash_map); 
  
        // Adding more elements 
        li_hash_map.put(7, "Hello"); 
  
        // Displying the map after adding one more element 
        System.out.println("" + li_hash_map); 
    } 
}
輸出:
{0=Welcome, 1=To, 2=The, 3=World, 4=Of, 5=geeks}
{1=To, 2=The, 3=World, 4=Of, 5=geeks, 6=GeeksforGeeks}
{2=The, 3=World, 4=Of, 5=geeks, 6=GeeksforGeeks, 7=Hello}

參考: https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html#removeEldestEntry-java.util.Map.Entry-



相關用法


注:本文由純淨天空篩選整理自Chinmoy Lenka大神的英文原創作品 LinkedHashMap removeEldestEntry() Method in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。