首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有有限元素的FIFO映射

具有有限元素的FIFO映射
EN

Stack Overflow用户
提问于 2013-06-07 16:36:48
回答 2查看 12.9K关注 0票数 19

我需要一个HashMap或simpy,一个具有固定数量的元素(n)的Map,其工作方式类似于FIFO队列。

因此,在元素号为<= n之前,新元素只是简单地放在映射中。

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-07 16:38:54

您可以使用LinkedHashMap这样做,如下所示:

代码语言:javascript
复制
new LinkedHashMap<K, V>(n) {
  @Override protected boolean removeEldestEntry(Entry<K, V> entry) {
    return size() > n;
  }
};
票数 38
EN

Stack Overflow用户

发布于 2016-04-11 14:37:46

正如我所处的那样,Java的详细性是它的最好的特性。以下是我的工作:

代码语言:javascript
复制
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());
        }
    }

}

它也在上工作,看起来它在入门类上有问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16989005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档