То, что вы описываете, является подходящей ситуацией для использования Queue
.
Так как хочется add
нового элемента и remove
старого. Вы можете добавить в конце и удалить с начала. Это не будет иметь большого значения.
Очередь имеет методы add(e)
и remove()
который добавляет в конце новый элемент, и удаляет с самого начала старого элемента, соответственно.
Queue<Integer> queue = new LinkedList<Integer>();
queue.add(5);
queue.add(6);
queue.remove(); // Remove 5
Таким образом, каждый раз, когда вы добавляете элемент в, queue
вы можете создать его резервную копию с помощью remove
вызова метода.
ОБНОВЛЕНИЕ : -
И если вы хотите исправить размерQueue
, то вы можете взглянуть на: -ApacheCommons#CircularFifoBuffer
Из documentation
: -
CircularFifoBuffer - это буфер «первым пришел - первым обслужен» с фиксированным размером, который заменяет его самый старый элемент, если он заполнен.
Buffer queue = new CircularFifoBuffer(2); // Max size
queue.add(5);
queue.add(6);
queue.add(7); // Automatically removes the first element `5`
Как видите, при достижении максимального размера добавление нового элемента автоматически удаляет первый вставленный элемент.
remove
иadd
?