1 /* Copyright (C) 2005-2011 Fabio Riccardi */
2 
3 package com.lightcrafts.utils;
4 
5 import java.util.LinkedHashMap;
6 import java.util.Map;
7 
8 /**
9  * An <code>LRUHashMap&lt;K,V&gt;</code> is-a {@link LinkedHashMap&lt;K,V&gt;}
10  * that implements a least-recently-used hash map.
11  *
12  * @author Fabio Riccardi [fabio@lightcrafts.com]
13  * @author Paul J. Lucas [paul@lightcrafts.com]
14  */
15 public class LRUHashMap<K,V> extends LinkedHashMap<K,V> {
16 
17     ////////// public /////////////////////////////////////////////////////////
18 
LRUHashMap( int maxEntries )19     public LRUHashMap( int maxEntries ) {
20         super();
21         m_maxEntries = maxEntries;
22     }
23 
LRUHashMap( int initialCapacity, int maxEntries )24     public LRUHashMap( int initialCapacity, int maxEntries ) {
25         super( initialCapacity );
26         m_maxEntries = maxEntries;
27     }
28 
LRUHashMap(int initialCapacity, float loadFactor, int max_entries)29     public LRUHashMap(int initialCapacity, float loadFactor, int max_entries) {
30         this(initialCapacity, loadFactor, true, max_entries);
31     }
32 
LRUHashMap( int initialCapacity, float loadFactor, boolean accessOrder, int maxEntries )33     public LRUHashMap( int initialCapacity, float loadFactor,
34                        boolean accessOrder, int maxEntries ) {
35         super( initialCapacity, loadFactor, accessOrder );
36         m_maxEntries = maxEntries;
37     }
38 
39     ////////// protected //////////////////////////////////////////////////////
40 
41     @Override
removeEldestEntry( Map.Entry<K,V> eldest )42     protected boolean removeEldestEntry( Map.Entry<K,V> eldest ) {
43         return size() > m_maxEntries;
44     }
45 
46     protected final int m_maxEntries;
47 }
48 /* vim:set et sw=4 ts=4: */
49