Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    2

    [JAVA] eliminare da una lista oggetti o(i,j) == o(j,i)

    Salve ragazzi, questo è il mio primo post quindi vi chiedo di scusarmi se commetto qualche errore. Vi presento il mio problema: ho una lista di "viaggi" che collega dei nodi (i,j)...il problema è che in questa lista ho sia il viaggio v(i,j) che v(j,i)...io vorrei eliminare uno dei due.

    Ho provato a fare in questo modo, ma non funziona:

    for (Saving s1 : savings) {
    for (Saving s2 : savings) {
    if(s1.getFirstNode() == s2.getSecondNode() && s1.getSecondNode() == s2.getFirstNode()){
    savings.remove(s2);
    }
    }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: [JAVA] eliminare da una lista oggetti o(i,j) == o(j,i)

    Originariamente inviato da Tufo
    Salve ragazzi, questo è il mio primo post quindi vi chiedo di scusarmi se commetto qualche errore. Vi presento il mio problema: ho una lista di "viaggi" che collega dei nodi (i,j)...il problema è che in questa lista ho sia il viaggio v(i,j) che v(j,i)...io vorrei eliminare uno dei due.

    Ho provato a fare in questo modo, ma non funziona:

    for (Saving s1 : savings) {
    for (Saving s2 : savings) {
    if(s1.getFirstNode() == s2.getSecondNode() && s1.getSecondNode() == s2.getFirstNode()){
    savings.remove(s2);
    }
    }
    }
    Metti il codice fra tag [CODE].

    In generale quel codice non può funzionare, l'uguaglianza fra oggetti non si verifica con l'operatore == (che verifica se due riferimenti puntano allo stesso oggetto) ma col metodo equals() o con qualche altro metodo. Però dipende dal tipo di questi "nodi".

    Per eliminare i duplicati da una lista, puoi semplicemente convertirla in un insieme (che non ammette duplicati) e poi da questo ricreare una lista.
    effeffe

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    2

    Re: Re: [JAVA] eliminare da una lista oggetti o(i,j) == o(j,i)

    Originariamente inviato da Kaamos
    Metti il codice fra tag [CODE].

    In generale quel codice non può funzionare, l'uguaglianza fra oggetti non si verifica con l'operatore == (che verifica se due riferimenti puntano allo stesso oggetto) ma col metodo equals() o con qualche altro metodo. Però dipende dal tipo di questi "nodi".

    Per eliminare i duplicati da una lista, puoi semplicemente convertirla in un insieme (che non ammette duplicati) e poi da questo ricreare una lista.
    Ah scusa non ho specificato che sono dei semplici int, quindi == dovrebbe andare bene no?! Comunque il problema è che non sono dei veri e propri duplicati. Mi spiego meglio: il viaggio dal nodo 1 e il nodo 2 è "uguale" al viaggio dal nodo 2 e il nodo 1...e io dovrei eliminare uno dei due

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Non vorrei dire una baggianata ma penso che il problema sia nella "forma abbreviata" dei for che utilizzi , con quella forma puoi solo accedere agli oggetti per visualizzarne il contenuto ma non puoi modificarne la collezione poichè non hai riferimenti ad essa.
    La soluzione?Procedi con i normali cicli for per indice e riferisci ai relativi oggetti tramite appunto gli indici , in quel modo potrai , se necessario , anche eliminare un oggeto da una lista (o quale che sia la tua struttura dati).

    Per conferma leggi qui


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.