LinkedHashMap removeEldestEntry() Method in Java

LinkedHashMap removeEldestEntry() Method in Java

java.util.LinkedHashMap.removeEldestEntry() 方法用于跟踪 Map 是否从中删除了任何最老的条目。每次将新元素添加到 LinkedHashMap 中时,Map 中的最旧条目就会被删除。此方法通常在使用 put() 和 putall() 方法将元素添加到 Map 后调用。

此方法允许 Map 修改自身。尽管该方法允许直接修改 Map,但如果对 Map 进行了修改,它必须返回 false,这将表明 Map 不应尝试进行进一步的修改,以免产生歧义。在该方法内部修改 Map 并返回 true 的效果未定义。

当 Map 表示缓存时,此方法非常有用,它允许 Map 逐个删除旧条目以减少内存消耗。

语法:

private boolean removeEldestEntry(Map.Entry eldest)

参数说明: 该方法接收一个参数, eldest 表示 Map 中最近插入的条目。如果 Map 是按访问顺序保存的,则 eldest 表示最近访问的条目,如果此方法返回 true,则该条目将被删除。如果在调用 put() 或 putAll() 之前 Map 为空,则这将是刚插入的条目;换句话说,如果 Map 包含一个条目,则最旧的条目也是最近的和最新的条目。

返回值: 如果 Map 中的 eldest 条目需要从 Map 中删除,则 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");

        // 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://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html#removeEldestEntry-java.util.Map.Entry-

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程