具有有限元素的先进先出图

2022-09-02 19:55:20

我需要一个或简单的a,具有固定数量的元素(n),就像FIFO队列一样工作。HashMapMap

因此,在元素编号<= n个新元素被简单地放入映射中。

对于元素编号> n,将删除第一个插入的元素,并将最新的元素放入映射中。

Java中是否有类似的东西,或者我必须实现它吗?


答案 1

您可以按如下方式执行此操作:LinkedHashMap

new LinkedHashMap<K, V>(n) {
  @Override protected boolean removeEldestEntry(Entry<K, V> entry) {
    return size() > n;
  }
};

答案 2

正如我在一旁,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());
        }
    }

}

它也适用于Google App Engine,这似乎与Enterge class有问题。


推荐