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