Ho una struttura di dati come questo:Come rimuovere elementi da una coda in Java con un ciclo
BlockingQueue casella di posta = new LinkedBlockingQueue();
Sto cercando di fare questo:
for(Mail mail: mailbox)
{
if(badNews(mail))
{
mailbox.remove(mail);
}
}
Ovviamente il contenuto del ciclo interferiscono con i limiti e un errore si attiva, quindi normalmente fare questo:
for(int i = 0; i < mailbox.size(); i++)
{
if(badNews(mailbox.get(i)))
{
mailbox.remove(i);
i--;
}
}
Ma purtroppo BlockingQueue non ha una funzione per ottenere o rimuovere un elemento per indice, quindi sono bloccato. Qualche idea?
Modifica - Alcuni chiarimenti: Uno dei miei obiettivi è mantenere lo stesso ordine in modo che spuntare dalla testa e rimetterlo in coda non va bene. Inoltre, anche se nessun altro thread rimuoverà la posta da una casella di posta, verrà aggiunto ad esso, quindi non voglio trovarmi nel mezzo di un algoritmo di rimozione, avere qualcuno che mi invii posta e quindi fare in modo che si verifichi un'eccezione.
Grazie in anticipo!
controllare la risposta che ho postato .. – UDPLover