У меня есть структура данных, как это:Как удалить элементы из очереди в Java с петлей
BlockingQueue почтового ящика = новый LinkedBlockingQueue();
Я пытаюсь сделать это:
for(Mail mail: mailbox)
{
if(badNews(mail))
{
mailbox.remove(mail);
}
}
Очевидно содержимое петли мешают пределы и срабатывает ошибка, так что я обычно делаю это:
for(int i = 0; i < mailbox.size(); i++)
{
if(badNews(mailbox.get(i)))
{
mailbox.remove(i);
i--;
}
}
Но, к сожалению, у BlockingQueue нет функции для получения или удаления элемента по индексу, поэтому я застрял. Есть идеи?
Редактировать - Несколько пояснений: Одна из моих целей - поддерживать тот же порядок, что и выскакивание с головы, и возвращение его обратно в хвост не является хорошим. Кроме того, хотя никакие другие потоки не будут удалять почту из почтового ящика, они будут добавлены к ней, поэтому я не хочу быть посреди алгоритма удаления, попросить кого-нибудь отправить мне письмо, а затем возникнет исключение.
Заранее спасибо!
проверить ответ, который я опубликовал .. – UDPLover