01: /* LRU
02: *
03: * Created on September 18, 2006
04: *
05: * Copyright (C) 2006 Internet Archive.
06: *
07: * This file is part of the Heritrix web crawler (crawler.archive.org).
08: *
09: * 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: * A least-recently used cache. As new entries are added to the map, the
30: * least-recently accessed entries are removed.
31: *
32: * @author pjack
33: *
34: * @param <K> The key type of the LRU
35: * @param <V> The value type of the LRU
36: */
37: public class LRU<K, V> extends LinkedHashMap<K, V> {
38:
39: /**
40: * Generated by Eclipse.
41: */
42: private static final long serialVersionUID = 1032420936705267913L;
43:
44: /**
45: * The maximum number of entries to store in the cache.
46: */
47: private int max;
48:
49: /**
50: * Constructor.
51: *
52: * @param max the maximum number of entries to cache
53: */
54: public LRU(int max) {
55: super (max, (float) 0.75, true);
56: this .max = max;
57: }
58:
59: @Override
60: protected boolean removeEldestEntry(Map.Entry<K, V> entry) {
61: return size() >= max;
62: }
63:
64: }
|