Açıkladığınız şey, kullanmak için uygun bir durumdur Queue
.
Çünkü add
yeni eleman ve remove
eskisini istiyorum . Sonuna ekleyebilir ve baştan kaldırabilirsiniz. Bu çok fazla fark yaratmayacak.
Kuyruğun yöntemleri vardır add(e)
ve remove()
bunlar sonunda yeni öğeyi ekler ve sırasıyla eski öğenin başından kaldırılır.
Queue<Integer> queue = new LinkedList<Integer>();
queue.add(5);
queue.add(6);
queue.remove(); // Remove 5
Böylece, her öğe eklediğinizde, queue
onu bir remove
yöntem çağrısı ile yedekleyebilirsiniz .
GÜNCELLEME : -
Ve boyutunu düzeltmekQueue
istiyorsanız , o zaman bir göz atabilirsiniz: -ApacheCommons#CircularFifoBuffer
Gönderen documentation
: -
CircularFifoBuffer, doluysa en eski öğesini değiştiren sabit boyutlu ilk giren ilk çıkar arabelleğidir.
Buffer queue = new CircularFifoBuffer(2); // Max size
queue.add(5);
queue.add(6);
queue.add(7); // Automatically removes the first element `5`
Gördüğünüz gibi, maksimum boyuta ulaşıldığında, yeni öğe eklemek, eklenen ilk öğeyi otomatik olarak kaldırır.
remove
veadd
?