View Javadoc

1   /* LRU
2   *
3   * Created on September 18, 2006
4   *
5   * Copyright (C) 2006 Internet Archive.
6   *
7   * This file is part of the Heritrix web crawler (crawler.archive.org).
8   *
9   * Heritrix is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU Lesser Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * any later version.
13  *
14  * Heritrix is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU Lesser Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser Public License
20  * along with Heritrix; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22  */
23  package org.archive.util;
24  
25  import java.util.LinkedHashMap;
26  import java.util.Map;
27  
28  
29  /***
30   * A least-recently used cache.  As new entries are added to the map, the
31   * least-recently accessed entries are removed.
32   * 
33   * @author pjack
34   *
35   * @param <K>  The key type of the LRU
36   * @param <V>  The value type of the LRU
37   */
38  public class LRU<K,V> extends LinkedHashMap<K,V> {
39  
40  
41      /***
42       * Generated by Eclipse.
43       */
44      private static final long serialVersionUID = 1032420936705267913L;
45  
46  
47      /***
48       * The maximum number of entries to store in the cache.
49       */
50      private int max;
51  
52  
53      /***
54       * Constructor.
55       * 
56       * @param max  the maximum number of entries to cache
57       */
58      public LRU(int max) {
59          super(max, (float)0.75, true);
60          this.max = max;
61      }
62      
63      
64      @Override
65      protected boolean removeEldestEntry(Map.Entry<K,V> entry) {
66          return size() >= max;
67      }
68  
69  }