総称クラスであるコレクションクラスを継承するサンプルとして。
//
// extends Generics Collection Class
//
/**
* 要素数に上限のある LinkedhashMap です。
*/
public class LimitedLinkedHashMap<K,V> extends LinkedHashMap<K,V> {
// Eclipse には serialVersionUID 自動生成機能がある。
// 警告アイコンを右クリックして Quick Fix を選択すると、
// add generated serial version ID という機能が出てくる。
// 酢ばらしぃ。
private static final long serialVersionUID = -8386865314183274352L;
private final int maxSize;
/**
*
* @param maxSize 要素の数の上限
*/
public LimitedLinkedHashMap(int maxSize){
super(maxSize + 1);
this.maxSize = maxSize;
}
// removeEldestEntry メソッドで true を返すようにオーバーライドすると、
// 使われてなさそうな要素(getもputも最近されていない要素)が削除される。
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > maxSize;
}
}
tags: zlashdot Java Java
Posted by NI-Lab. (@nilab)
コメント
LinkedHashMap のコンストラクタを呼び出すところは、
super(maxSize + 1, 0.75f, true);
とすれば、「予測可能な繰り返し順序」がアクセス順になる。デフォルトでは挿入順。
投稿者: NI-Lab. | 2006年09月17日 11:12