Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339

    Modificare campo istanza elemento TreeSet

    Ciao a tutti.

    Devo modificare un campo istanza di un oggetto contenuto in una TreeSet .

    Per esempio ho un oggetto Articolo contenuto in una TreeSet e voglio modificare il suo campo istanza "nome".

    Si può fare direttamente ? Oppure bisogna fare il meccanismo di sostituzione dell'oggetto?
    Cioè Si rimuove l'oggetto interessato e lo si rimpiazza con quello modificato?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Il campo di Articolo ha un setter?
    Se sì, basta che scorri il TreeSet fino all'Articolo cercato e poi fai setNome() su quell'articolo.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Avevo già provato ma non succedeva niente.....probabilmente ho sbagliato qualche altra cosa

    codice:
    public void modificaCaratteristiche(String c , int codice){
    
    Iterator<Articolo> = treeset.iterator();
    while(it.hasNext()){
    Articolo art = it.next();
    if(art.getCodice() == codice)
    art.setCaratteristiche(c);
     }
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    Devo modificare un campo istanza di un oggetto contenuto in una TreeSet .

    Per esempio ho un oggetto Articolo contenuto in una TreeSet e voglio modificare il suo campo istanza "nome".

    Si può fare direttamente ? Oppure bisogna fare il meccanismo di sostituzione dell'oggetto?
    Cioè Si rimuove l'oggetto interessato e lo si rimpiazza con quello modificato?
    In generale, un Set non è come una Map dove puoi effettivamente estrarre il value a fronte di una key. Da un generico Set non puoi tirar fuori un elemento sapendo "qualcosa" di questo elemento. Puoi solo sapere se è contenuto un elemento che è "uguale" ad un altro che hai. E al limite puoi solo fare una iterazione o ottenere un array degli elementi.
    TreeSet in più ha metodi specifici per "navigare" nel Set secondo alcuni criteri.

    Comunque il punto principale è ottenere il riferimento a quell'oggetto contenuto che ti interessa e questo lo ottieni ad esempio con una iterazione. Una volta che lo hai ottenuto, se l'oggetto è "mutabile" (ovvero ha un setNome), allora puoi cambiare quel campo.
    Se fosse immutabile, devi per forza rimuovere quell'oggetto e inserirne uno nuovo con il dato aggiornato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    codice è un int

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    codice è un int
    Sì, scusa, prima ho risposto indicando come problema il == ma non avevo visto subito che il dato è un int ed avevo frettolosamente cancellato il post.

    Comunque nel tuo metodo non vedo nulla di palesemente errato. Si potrebbe anche fare con il for-each (ma non è quello il punto). Iteri ed ottieni ciascuno degli oggetti Articolo e se uno soddisfa il test e se setCaratteristiche è corretto, non vedo perché non possa funzionare.

    P.S. come sintassi manca il nome 'it' del Iterator ma magari è solo qui che hai postato male.
    Ultima modifica di andbin; 10-07-2014 a 17:10
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Si hai ragione ho sbagliato a postare...
    Il metodo funziona , magari ero stanco e avrò scritto male qualcosa

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.