📜  Java中的 LinkedHashMap removeEldestEntry() 方法

📅  最后修改于: 2022-05-13 01:55:40.848000             🧑  作者: Mango

Java中的 LinkedHashMap removeEldestEntry() 方法

Java中的Java .util.LinkedHashMap.removeEldestEntry() 方法用于跟踪映射是否从映射中删除任何最旧的条目。因此,每次将新元素添加到 LinkedHashMap 时,都会从映射中删除最旧的条目。此方法通常在使用 put() 和 putall() 方法将元素添加到地图后调用。
此方法允许地图按照其返回值的指示修改自身。尽管允许该方法直接修改映射,但如果这样做,它必须返回 false,这表明映射不应尝试任何导致歧义的进一步修改。未指定在此方法中修改地图后返回 true 的效果。
当映射表示缓存时,这非常有用,它允许映射通过一个接一个地删除过时的条目来减少内存消耗。
句法:

private boolean removeEldestEntry(Map.Entry eldest)

参数:该方法接受一个参数eldest ,该参数指的是地图中最近最少插入的条目。如果映射是访问顺序,则eldest指的是最近最少访问的条目,如果此方法返回 true,则将被删除。如果在调用 put 或 putAll 之前映射为空,则这将是刚刚插入的条目;换句话说,如果映射包含单个条目,则最旧的条目也是最新和最新的条目。
返回值:如果要从映射中删除最的条目,则映射返回 true,如果不删除或保留条目,则返回 false。
下面的程序用于说明Java.util.LinkedHashMap.removeEldestEntry() 方法的工作:

Java
// 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 li_hash_map =
        new LinkedHashMap() {
            protected boolean removeEldestEntry(Map.Entry 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");
 
        // Displaying the map after adding one more element
        System.out.println("" + li_hash_map);
 
        // Adding more elements
        li_hash_map.put(7, "Hello");
 
        // Displaying 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: Java/util/LinkedHashMap.html#removeEldestEntry-java.util.Map.Entry-