Lo que está describiendo es una situación apropiada para usar Queue
.
Ya que quieres un add
elemento nuevo, y remove
el viejo. Puede agregar al final y eliminar desde el principio. Eso no hará mucha diferencia.
Queue tiene métodos add(e)
y remove()
que agrega al final el nuevo elemento, y elimina desde el principio el elemento anterior, respectivamente.
Queue<Integer> queue = new LinkedList<Integer>();
queue.add(5);
queue.add(6);
queue.remove(); // Remove 5
Por lo tanto, cada vez que agregue un elemento al queue
puede respaldarlo con una remove
llamada al método.
ACTUALIZACIÓN : -
Y si desea corregir el tamaño de laQueue
, entonces puede echar un vistazo a: -ApacheCommons#CircularFifoBuffer
De la documentation
: -
CircularFifoBuffer es un búfer primero en entrar, primero en salir con un tamaño fijo que reemplaza su elemento más antiguo si está lleno.
Buffer queue = new CircularFifoBuffer(2); // Max size
queue.add(5);
queue.add(6);
queue.add(7); // Automatically removes the first element `5`
Como puede ver, cuando se alcanza el tamaño máximo, al agregar un nuevo elemento, se elimina automáticamente el primer elemento insertado.
remove
yadd
?