Những gì bạn đang mô tả, là một tình huống thích hợp để sử dụng Queue.
Vì bạn muốn addyếu tố mới, và yếu tố removecũ. Bạn có thể thêm vào cuối và loại bỏ từ đầu. Điều đó sẽ không tạo ra nhiều sự khác biệt.
Hàng đợi có các phương thức add(e)và remove()bổ sung vào cuối phần tử mới và loại bỏ phần đầu tương ứng.
Queue<Integer> queue = new LinkedList<Integer>();
queue.add(5);
queue.add(6);
queue.remove(); // Remove 5
Vì vậy, mỗi khi bạn thêm một phần tử vào, queuebạn có thể sao lưu nó bằng một removecuộc gọi phương thức.
CẬP NHẬT : -
Và nếu bạn muốn sửa kích thước củaQueue , thì bạn có thể xem: -ApacheCommons#CircularFifoBuffer
Từ documentation: -
ThongFifoBuffer là bộ đệm đầu tiên xuất hiện với kích thước cố định thay thế phần tử cũ nhất của nó nếu đầy đủ.
Buffer queue = new CircularFifoBuffer(2); // Max size
queue.add(5);
queue.add(6);
queue.add(7); // Automatically removes the first element `5`
Như bạn có thể thấy, khi đạt đến kích thước tối đa, sau đó thêm phần tử mới sẽ tự động loại bỏ phần tử đầu tiên được chèn.
removevàadd?