我需要一个HashMap或simpy,一个具有固定数量的元素(n)的Map,其工作方式类似于FIFO队列。
因此,在元素号为<= n之前,新元素只是简单地放在映射中。
对于元素数>n,删除第一个插入的元素,并将最新的元素放在映射中。
Java中是否有类似的东西,还是我必须实现它?
发布于 2013-06-07 16:38:54
您可以使用LinkedHashMap这样做,如下所示:
new LinkedHashMap<K, V>(n) {
@Override protected boolean removeEldestEntry(Entry<K, V> entry) {
return size() > n;
}
};发布于 2016-04-11 14:37:46
正如我所处的那样,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());
}
}
}它也在上工作,看起来它在入门类上有问题。
https://stackoverflow.com/questions/16989005
复制相似问题