Java.util.LinkedHashMap 类

如果此映射应删除其最旧的条目,则 java.util.LinkedHashMap.removeEldestEntry() 方法将返回 true。在将新条目插入映射后, put 和 putAll 会调用此方法。它为实现者提供了每次添加新条目时删除最旧条目的机会。如果映射表示缓存,这非常有用:它允许映射通过删除陈旧条目来减少内存消耗。

语法

protected boolean removeEldestEntry(Map.Entry<K,V> eldest)

这里,K 和 V 是键的类型,

参数

eldest 最近最少插入的条目映射,或者如果这是按访问顺序的映射,则为最近最少访问的条目。如果此方法返回 true,则这是将被删除的条目。如果在导致此调用的 put 或 putAll 调用之前映射为空,则这将是刚刚插入的条目;换句话说,如果map包含单个条目,则最旧的条目也是最新的。

返回值

返回 true是否应从map中删除最旧的条目;如果应保留,则为 false。

异常

示例:

在下面的示例中,java.util.LinkedHashMap.removeEldestEntry() 方法用于检查给定映射是否应删除其最旧的条目。

import java.util.*;

public class MyClass {
  private static final int MAX_ENTRIES = 4;

  public static void main(String[] args) {
    //创建一个linkedhashmap
    LinkedHashMap<Integer, String> MyMap = new LinkedHashMap<Integer, String>(){
      protected boolean removeEldestEntry(Map.Entry<Integer, String> eldest) {
        return size() > MAX_ENTRIES;
      }
    };

    //填充map
    //当map大小增加超过
    //MAX_ENTRIES,removeEldestEntry方法为
    //调用以删除最旧的条目
    MyMap.put(101, "John");
    MyMap.put(102, "Marry");
    MyMap.put(103, "Kim");
    MyMap.put(104, "Jo");
    MyMap.put(105, "Sam");
    MyMap.put(106, "Ramesh");

    //打印map内容
    System.out.println("MyMap contains: " + MyMap);
  }
}

上述代码的输出将是:

MyMap contains: {103=Kim, 104=Jo, 105=Sam, 106=Ramesh}