Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    ArrayList - Problema di aggiunta elemento

    Salve a tutti

    ho un problema con un oggetto ArrayList (probabilmente non mi e' chiaro concettualmente)

    In pratica mi sono creato un Oggetto che ho chiamato "OggettoNuovo" i cui attributi sono 3 campi:
    1 campo di tipo stringa, 1 campo booleano e 1 campo contenente una Lista di "OggettoNuovo"

    Nella mia classe "ClasseDiProva" ho voluto crearmi una variabile chiamata "on" che e' un ArrayList
    di "OggettoNuovo".
    Poi nel main mi creo una variabile di tipo "OggettoNuovo" (che senza troppa fantasia ho chiamato proprio
    "oggettoNuovo"). Aggiungo due elementi alla mia ArrayList come scritto nel codice che vi posto qua' sotto.

    Quando stampo gli elementi della lista, l'ultimo oggetto inserito...mi ha sovrascritto anche gli oggetti precedenti.

    E' PIU' SEMPLICE....MOSTRANDOVI IL IL CODICE .....
    le due print finali...mi stampano entrambe l'oggetto "OggettoNuovo" che ha per valore di stringa "Stringa 2".
    In pratica l'elemento con stringa "Stringa 1" mi sparisce!!!!!!!!!!

    sto cercando di capire dove sbaglio.....vi ringrazio moltissimo!!!!!

    PZ



    import java.util.List;
    import java.util.ArrayList;

    public class ClasseDiProva {

    private List<OggettoNuovo> on;

    public ClasseDiProva(){
    on = new ArrayList<OggettoNuovo>();
    }
    public static void main(String[] args) {

    ClasseDiProva cdp = new ClasseDiProva();
    OggettoNuovo oggettoNuovo = new OggettoNuovo();

    oggettoNuovo.setStringaServizioCows("Stringa 1");
    oggettoNuovo.setNestedXml(true);
    cdp.oxc.add(oggettoNuovo);

    oggettoNuovo.setStringaServizioCows("Stringa 2");
    oggettoNuovo.setNestedXml(true);

    cdp.oxc.add(oggettoNuovo);

    System.out.println(cdp.oxc.size());
    System.out.println(cdp.oxc.get(0).getStringaServiz ioCows() + "\n"); // STAMPA Stringa 2 -> Perche'???
    System.out.println(cdp.oxc.get(1).getStringaServiz ioCows() + "\n"); // STAMPA Stringa 2
    } // fine main
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: ArrayList - Problema di aggiunta elemento

    Originariamente inviato da powerfulzibe
    le due print finali...mi stampano entrambe l'oggetto "OggettoNuovo" che ha per valore di stringa "Stringa 2".
    Certo .... perchè l'oggetto OggettoNuovo è lo stesso!!! Hai aggiunto nell'arraylist due reference allo stesso oggetto. E se poi cambi lo stato dell'oggetto, è chiaro che le modifiche le "vedi" attraverso entrambe le entry dell'arraylist.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Giusto per ricordarti anche l'uso dei tag [ code] [ /code] [ php][ /php] il cui utilizzo è previsto dal regolamento:

    codice:
    import java.util.List;
    import java.util.ArrayList;
    
    public class ClasseDiProva
    {
    
    	private List<OggettoNuovo> on;
    
    	public ClasseDiProva()
    	{
    		on = new ArrayList<OggettoNuovo>();
    	}
    	public static void main(String[] args) 
    	{
    
    		ClasseDiProva cdp = new ClasseDiProva();
    		OggettoNuovo oggettoNuovo = new OggettoNuovo();
    
    		oggettoNuovo.setStringaServizioCows("Stringa 1");
    		oggettoNuovo.setNestedXml(true);
    		cdp.oxc.add(oggettoNuovo);
    
    		// Manca una riga come questa... altrimenti lavori su un solo oggetto!
    		oggettoNuovo = new OggettoNuovo();		// così diventan 2 oggetti distinti!
    		oggettoNuovo.setStringaServizioCows("Stringa 2");
    		oggettoNuovo.setNestedXml(true);
    		cdp.oxc.add(oggettoNuovo);
    
    		System.out.println(cdp.oxc.size());
    		System.out.println(cdp.oxc.get(0).getStringaServizioCows() + "\n"); // STAMPA Stringa 2 -> Perche'???
    		System.out.println(cdp.oxc.get(1).getStringaServizioCows() + "\n"); // STAMPA Stringa 2
    	} // fine main
    }
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  4. #4
    Grazie Mille!!!!!!!!


    Ps:

    hai ragione!
    okkey sui tag!! ....

    Ciao

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.