I eine Datenstruktur, wie diese haben Elemente aus einer Warteschlange in Java entfernen:Wie mit einer Schleife
Blocking mailbox = new LinkedBlockingQueue();
Ich versuche, dies zu tun:
for(Mail mail: mailbox)
{
if(badNews(mail))
{
mailbox.remove(mail);
}
}
Offensichtlich wird der Inhalt der Schleife stören die Grenzen und ein Fehler ausgelöst wird, so würde ich diese normalerweise tun:
for(int i = 0; i < mailbox.size(); i++)
{
if(badNews(mailbox.get(i)))
{
mailbox.remove(i);
i--;
}
}
Aber leider haben BlockingQueue's keine Funktion, um ein Element per Index zu bekommen oder zu entfernen, also bleibe ich stecken. Irgendwelche Ideen?
Edit - Ein paar Erläuterungen: Eines meiner Ziele ist die Aufrechterhaltung der gleichen Reihenfolge so aus dem Kopf popping und es zurück in den Schwanz setzen ist nicht gut. Auch wenn keine anderen Threads E-Mails aus einem Postfach entfernen, werden sie hinzugefügt, sodass ich mich nicht in der Mitte eines Entfernungsalgorithmus befinden möchte, dass jemand mir eine E-Mail sendet und dann eine Ausnahme auftritt.
Vielen Dank im Voraus!
Überprüfen Sie die Antwort, die ich gepostet habe. – UDPLover