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<K,V></code> is-a {@link LinkedHashMap<K,V>} 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