Originariamente inviato da tommi1288
Ho una classe nodo: il cui costruttore instanzia un oggetto di tipo nodo caratterizzato da delle coordinate e da un nome ( es : c1) e una classe arco il cui costruttore instanzia un oggetto di tipo arco caratterizzato da un nodo di partenza dell'arco e uno di destinzazione. Es c1 è nodo di partenza e c9 di arrivo o destinazione.
C1 , C9 e così via identificano sempre il solito nodo.
Ok, è chiaro. E non ha quindi molta importanza allora se es. arco1.partenza e arco2.destinazione fanno riferimento ad uno stesso identico oggetto nodo descritto "c9" oppure se fanno riferimento a 2 nodi distinti ognuno descritto con "c9".
Non ha importanza appunto perché in ogni caso puoi verificare l'uguaglianza di "significato" di due nodi basandoti sul nome.

Una possibilità per verificare se un Arco con quella coppia di nodi/nomi è già stato "visitato" scorrrendo la lista è quello di sfruttare un Set (es. HashSet) che non ammette duplicati.
Scorri la lista e verifichi se la coppia di nomi è già presente nel Set. Se è già presente, devi scartare l'Arco, altrimenti inserisci la informazione nel Set.

Questo tecnicamente puoi farlo:

1) inserendo nel Set una stringa che compone i nomi dei due nodi dell'Arco es. "c1-c9" (se mettere un separatore e quale lo scegli tu). Non mi piace tanto questa soluzione però, perché devi stabilire un ordine preciso sulla sequenza dei nomi. Arco(c1,c9) e Arco(c9,c1) devono essere rappresentati dalla stessa stringa.

2) inserendo nel Set direttamente gli Arco se: Arco ha il metodo equals implementato per dire se 2 Arco sono "uguali" in tal senso es. Arco(c1,c9) uguale a Arco(c1,c9) oppure Arco(c1,c9) uguale a Arco(c9,c1). E anche se hashCode è stato implementato per rispettare il contratto con equals.
Se fai la cosa in modo oculato: equals di Arco invocherà equals sui nodi e ogni nodo avrà equals che confronta il nome (due nodi sono "uguali" se hanno lo stesso nome).

3) inserendo nel Set oggetti di una nuova classe es. CoppiaNodi in modo concettualmente simile al punto 2). Ma solo se, per qualche motivo, non puoi usare la soluzione 2).

La preferibile è la 2).