O que você está descrevendo é uma situação apropriada para usar Queue
.
Desde que você deseja add
novo elemento, eremove
o antigo. Você pode adicionar no final e remover do início. Isso não fará muita diferença.
A fila possui métodos add(e)
e remove()
que adiciona ao final o novo elemento e remove desde o início o elemento antigo, respectivamente.
Queue<Integer> queue = new LinkedList<Integer>();
queue.add(5);
queue.add(6);
queue.remove(); // Remove 5
Portanto, toda vez que você adiciona um elemento ao queue
você pode fazer backup com uma remove
chamada de método.
ATUALIZAÇÃO : -
E se você quiser corrigir o tamanho doQueue
, poderá dar uma olhada em: -ApacheCommons#CircularFifoBuffer
Desde documentation
: -
O CircularFifoBuffer é um buffer primeiro a entrar, com um tamanho fixo que substitui o elemento mais antigo se estiver cheio.
Buffer queue = new CircularFifoBuffer(2); // Max size
queue.add(5);
queue.add(6);
queue.add(7); // Automatically removes the first element `5`
Como você pode ver, quando o tamanho máximo é atingido, a adição de um novo elemento remove automaticamente o primeiro elemento inserido.
remove
eadd
?