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  }