O que você está descrevendo é uma situação apropriada para usar Queue .
Desde que você deseja addnovo 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 queuevocê pode fazer backup com uma removechamada 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.
removeeadd?