Java LinkedHashMap removeEldestEntry()方法

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 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教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程