缓冲区有五个元素Java

时间:2014-07-29 12:35:49

标签: java algorithm

使用五个元素创建一些构造的最佳方法是什么?当我尝试使用另一个构建来删除第一个元素时?

6 个答案:

答案 0 :(得分:1)

我建议您ArrayList Handle非常容易,删除/添加操作可用

答案 1 :(得分:0)

Queue是您需要的LIFO对象。

  • 如果您是Apache粉丝,则可以CircularFifoQueue
  • 如果你更喜欢番石榴,你有EvictingQueue
  • 你也可以自己做:( LinkedList是其中一个实现)

`

// Create
Queue q = new LinkedList();

// Insert 
void safeInsert(Queue q, Object elt) {
  if (q.size()>=5) {
    q.poll();
  }
  q.offer(elt);
}

答案 2 :(得分:0)

Apache Commons Collections提供的CircularFifoQueue可以满足您的需求。

答案 3 :(得分:0)

您要求的内容称为循环缓冲区循环缓冲区

Java库does not provide an implementation适合您(confirmedconfirmed again),因此您必须write one yourself或使用第三方库。

答案 4 :(得分:0)

我不确定这是否是最佳解决方案",但它非常简单并且完全符合您的要求:

List<Foo> list = new ArrayList<>();
...

list.add(item);
if(list.size()>5){
 list.remove(0);
}

答案 5 :(得分:0)

public class MyArrayList extends ArrayList<Object>{

    private static final int MAX_SIZE = 5;

    @Override
    public void add(int index, Object object) {

        if(this.size() == MAX_SIZE)
            this.remove(0);
        super.add(MAX_SIZE -1, object);
    }

    @Override
    public boolean add(Object object) {

        if(this.size() == MAX_SIZE)
            this.remove(0);
        return super.add(object);
    }

    @Override
    public boolean addAll(Collection<? extends Object> collection) {
        throw new SomeException();
    }

    @Override
    public boolean addAll(int index, Collection<? extends Object> collection) {
        throw new SomeException();
    }

}