是否有任何java Deque实现了maxlen,比如python collections.deque?

时间:2015-05-15 13:11:53

标签: java python deque

Python的collections.deque有一个maxlen参数,例如

  

[...] deque受限于指定的最大长度。一旦有界长度双端队列已满,当添加新项目时,从对方端丢弃相应数量的项目。 [...]

我一直在寻找一个在Java中实现Deque interface的类,它也是如此。

public ArrayDeque(int numElements)看起来像numElements只将deque初始化为该大小,但不会将其强制为最大长度。

1 个答案:

答案 0 :(得分:1)

可能不是。 LinkedHashMap具有一些用于构建具有逐出策略的缓存的功能,但这可能对您想要的东西有些过分。只需扩展Deque并添加自定义逻辑; - )

编辑:

class MyFixedSizeDeque<T> extends ArrayDeque<T>
{
   private int maxSize;
   public MyDeque(int size)
   {
      this.maxSize = size; 
   }

   @Override
   public void addLast(T e)
   {
      this.addLast(e);
      if(this.size() > maxSize)
         this.removeFirst();
   } 
}

我的Java有点生疏,你可能想要重载一些方法(或转换为合成而不是继承)但我希望你能得到这个想法......