当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java LinkedHashMap removeEldestEntry()用法及代码示例


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

此方法允许Map按照其返回值的指示修改自身。尽管允许该方法直接修改Map,但如果这样做,它必须返回false,这表明该Map不应尝试任何进一步的修改而导致歧义的事实。未指定从此方法修改映射后返回true的效果。

当映射表表示一个高速缓存时,此函数非常有用,在该高速缓存表中,它允许映射表通过依次删除陈旧条目来减少内存消耗。
用法:


private boolean removeEldestEntry(Map.Entry eldest)

参数:该方法接受一个最老的参数,该参数表示映射中最近插入的条目。如果映射具有访问顺序,则最旧引用最近访问最少的条目,如果此方法返回true,则将其删除。如果在put或putAll调用之前映射为空,则这将是刚刚插入的条目;换句话说,如果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"); 
  
        // Displying the map after adding one more element 
        System.out.println("" + li_hash_map); 
  
        // Adding more elements 
        li_hash_map.put(7, "Hello"); 
  
        // Displying 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-



相关用法


注:本文由纯净天空筛选整理自Chinmoy Lenka大神的英文原创作品 LinkedHashMap removeEldestEntry() Method in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。