我需要 aHashMap
或 simpy aMap
具有固定数量的元素(n)像FIFO队列一样工作。
因此,直到元素编号 <= n之前,只需将新元素放入地图中。
对于元素编号 > n,第一个插入的元素被删除,最新的元素被放入地图中。
Java中有类似的东西,还是我必须实现它?
我需要 aHashMap
或 simpy aMap
具有固定数量的元素(n)像FIFO队列一样工作。
因此,直到元素编号 <= n之前,只需将新元素放入地图中。
对于元素编号 > n,第一个插入的元素被删除,最新的元素被放入地图中。
Java中有类似的东西,还是我必须实现它?
您可以LinkedHashMap
按以下方式执行此操作:
new LinkedHashMap<K, V>(n) {
@Override protected boolean removeEldestEntry(Entry<K, V> entry) {
return size() > n;
}
};
当我站在一边时,Java 冗长是它最好的特性......下面对我有用:
public class FifoMap extends LinkedHashMap<String, String> {
int max;
/**
*
*/
private static final long serialVersionUID = 1L;
public FifoMap (int max){
super(max + 1);
this.max = max;
}
@Override
public String put (String key, String value) {
String forReturn = super.put(key, value);
if (super.size() > max){
removeEldest();
}
return forReturn;
}
private void removeEldest() {
Iterator <String> iterator = this.keySet().iterator();
if (iterator.hasNext()){
this.remove(iterator.next());
}
}
}
它也适用于似乎与 Entry 类有问题的 Google App Engine。