So entfernen Sie Elemente aus einer Warteschlange in Java mit einer Schleife

Ich habe eine Daten-Struktur wie diese:

BlockingQueue mailbox = new LinkedBlockingQueue();

Ich versuche, dies zu tun:

for(Mail mail: mailbox)
{
    if(badNews(mail))
    {
        mailbox.remove(mail);
    }
}

Offensichtlich der Inhalt der Schleife stören die Schranken, und ein Fehler wird ausgelöst, so würde ich in der Regel tun dies:

for(int i = 0;  i < mailbox.size(); i++)
{
    if(badNews(mailbox.get(i)))
    {
        mailbox.remove(i);
        i--;
    }
}

Aber leider BlockingQueue ist nicht eine Funktion zu erhalten oder entfernen Sie ein element vom index, also bin ich stecken. Irgendwelche Ideen?

Edit - Ein paar Klarstellungen:
Eines meiner Ziele ist die Aufrechterhaltung der gleichen Reihenfolge so knallen aus dem Kopf und legt es wieder in der Rute ist nicht gut. Auch, obwohl keine anderen threads zu entfernen wird E-mail aus einer mailbox, die Sie hinzufügen, um es, also ich möchte nicht in der Mitte von einem removal-Algorithmus, kann jemand schicken Sie mir eine mail, und dann haben Sie eine Ausnahme auftreten.

Vielen Dank im Voraus!

  • überprüfen Sie die Antwort, die ich gepostet haben..
InformationsquelleAutor Josh | 2014-10-21
Schreibe einen Kommentar