有没有 java Deque 实现了 maxlen,比如 python collections.deque?

Is there any java Deque that implements maxlen, like python collections.deque?

Python 的 collections.deque 有一个 maxlen 参数,这样

[...] the deque is bounded to the specified maximum length. Once a bounded length deque is full, when new items are added, a corresponding number of items are discarded from the opposite end. [...]

我一直在寻找一个 class 来实现 Java 中的 Deque interface,也是一样的。

public ArrayDeque(int numElements) 看起来 numElements 仅将双端队列初始化为该大小,但不将其强制为最大长度。

可能不会。 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 有点生疏,您可能想要重载更多方法(或切换到组合而不是继承),但我希望您能理解...