Vorrei utilizzare un elenco collegato per eseguire estrazioni e inserimenti di elementi, provando tutte le combinazioni per un euristico. Gli elenchi collegati sono più efficienti per questo tipo di operazioni. Dal momento che vorrei provare tutte le possibili coppie di estrazioni/inserimenti, ho usato due diversi iteratori sull'elenco. Ciò solleva un "ConcurrentModificationException". Come posso eseguire questa operazione in modo efficiente, senza re-attraversare la lista ogni volta, in quanto ciò vanificherebbe l'intero scopo di utilizzare una lista in primo luogo?Come utilizzare due diversi iteratori su un elenco collegato in Java?
Ecco la parte rilevante del codice:
ListIterator<Integer> it1 = data.listIterator();
ListIterator<Integer> it2;
while(it1.hasNext()) {
int i = it1.next();
it2 = data.listIterator();
while(it2.hasNext()) {
if (i == it2.next()) continue; // continue right away when the indexes are equal
it1.remove();
it2.add(i);
if (length() < best)
return true;
}
// when the swap is not better/consistent
it2.remove();
it1.add(i);
}
return false;
Grazie
Se si modifica l'elenco tramite un iteratore, non è possibile utilizzare altri iteratori. –
È possibile utilizzare ConcurrentLinkedQueue perché non riceve CME? Sospetto che ci sia un modo più efficiente di fare qualsiasi cosa tu stia facendo in ogni caso. –
Si prega di google tali: www.google.com/search?q=multi+dimensional+linked+list+java e controllare i risultati come http://www.dreamincode.net/forums/topic/282327-multi-dimensional-linked -list/ –