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