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