Python的collections.deque有一个maxlen
参数,例如
[...] deque受限于指定的最大长度。一旦有界长度双端队列已满,当添加新项目时,从对方端丢弃相应数量的项目。 [...]
我一直在寻找一个在Java中实现Deque interface的类,它也是如此。
public ArrayDeque(int numElements)看起来像numElements
只将deque初始化为该大小,但不会将其强制为最大长度。
答案 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有点生疏,你可能想要重载一些方法(或转换为合成而不是继承)但我希望你能得到这个想法......