CacheMap.java

import java.util.*;
/**
 * Table de hachage permettant de réaliser un cache.
 */
public class CacheMap extends LinkedHashMap {
  int maxSize;
  /**
   * Construit un cache de taille maxSize (sur l'ordre d'accès)
   * initialement vide, avec une capacité par défaut de 16 et un
   * seuil de facteur de charge de 75%.
   */
  public CacheMap(int maxSize) {
    super(16, 0.75f, true); // true pour choisir l'ordre d'accès.
    this.maxSize = maxSize;
  }
  /** Détermine si le "plus ancien" élément doit être jeté. */
  protected boolean removeEldestEntry(Map.Entry eldest) {
    return size() > maxSize;
  }
  public static void main(String[] args) {
    CacheMap map = new CacheMap(3);      // Le cache est de taille 3
    map.put("1","un");
    map.put("2","deux");
    map.get("1");
    map.put("3","trois");
    map.put("4","quatre");
    for (Iterator it = map.entrySet().iterator(); it.hasNext(); )
      System.out.print(it.next() + " ");
  }                                      // Affiche: 1=un 3=trois 4=quatre
}