Tôi có một cấu trúc dữ liệu như thế này:Làm thế nào để loại bỏ các yếu tố từ một hàng đợi trong Java với một vòng lặp
mailbox BlockingQueue = new LinkedBlockingQueue();
Tôi đang cố gắng để làm điều này:
for(Mail mail: mailbox)
{
if(badNews(mail))
{
mailbox.remove(mail);
}
}
Rõ ràng các nội dung của vòng can thiệp với các giới hạn và một lỗi được kích hoạt, vì vậy tôi thường làm điều này:
for(int i = 0; i < mailbox.size(); i++)
{
if(badNews(mailbox.get(i)))
{
mailbox.remove(i);
i--;
}
}
Nhưng đáng buồn là BlockingQueue không có chức năng lấy hoặc xóa một phần tử theo chỉ mục, vì vậy tôi bị kẹt. Ý tưởng nào?
Chỉnh sửa - Một số giải thích rõ ràng: Một trong những mục tiêu của tôi là duy trì cùng một thứ tự như vậy xuất hiện từ đầu và đưa nó trở lại vào đuôi là không tốt. Ngoài ra, mặc dù không có chủ đề nào khác sẽ xóa thư khỏi hộp thư, chúng sẽ thêm vào thư, vì vậy tôi không muốn ở giữa thuật toán xóa, nhờ ai đó gửi thư cho tôi và sau đó có ngoại lệ.
Cảm ơn trước!
kiểm tra câu trả lời tôi đã đăng .. – UDPLover