Oppure

Loading
09/06/13 21:47
Mi sono imbattuto in un problema particolare:
Far interagire tutte le combinazioni (e non permutazioni) in una LinkedList e rimuovere alcuni elementi.

A grandi linee:


L'interfaccia Oggetto:

interface Oggetto {
  boolean interagisci(Oggetto other);
}



La classe GestoreO:

class GestoreO {
  LinkedList<Oggetto> lista;
  void interagisci() {
    for(ListIterator<Oggetto> iA = lista.listIterator(); iA.hasNext(); ) {
      Oggetto A = iA.next();
      for(ListIterator<Oggetto> iB = lista.listIterator(iA.nextIndex()); iB.hasNext(); ) {
        if(A.interagisci(iB.next())) {
          /* Rimuovi A e B da "lista" modificando di conseguenza gli iteratori */
          break;
        }
      }
    }
  }
}


Il problema principale è la rimozione di A e B, possibilmente alterando gli iteratori in modo da non eseguire più il controllo per B.
Un altro problema è nextIndex(), in quanto avevo pensato per questioni di velocità di usare una LinkedList, ma questo viene limitato dall'accesso per indice effettuato dalla creazione del secondo iteratore (dovendo ripercorrere l'intera lista fino all'elemento successivo).

Grazie in anticipo per l'aiuto :k:.

Spero che la domanda sia comprensibile :)
Ultima modifica effettuata da 09/06/13 21:49
10/06/13 11:37
Ultimo

Per velocizzare devi prima ordinare la lista, in fase di iterazione modificare gli index dovrebbe generare un
eccezzione
If ok Then GOTO Avanza else GOTO Inizia

10/06/13 13:33
In che senso ordinare la lista?
Ho una lista di oggetti non comparabili, come faccio a ordinarli?
10/06/13 14:26
Ultimo

Se non sono comparabili allora non la riordini :(
If ok Then GOTO Avanza else GOTO Inizia