Те, що ви описуєте, - це відповідна ситуація 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
?