Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    97

    [JAVA]scansione di una lista

    Ho una lista di oggetti e vorrei farne la scansione.
    Gli oggetti sono del tipo:
    codice:
    public class TabellaUtenti{
    
    	public String	username;
    	public String 	password;
    	public String	newusername;
    	public String 	newpassword;
    La stringa è costruita semplicemente aggiungendo delgi elementi:
    codice:
         ...
            	 appoggio=new TabellaUtenti();
            	 ListaAppoggio = new ArrayList();
            	 
            	 while(rs.next()) {
    
            		 appoggio.setPassword(utenti.getPassword());
            		 appoggio.setUsername(utenti.getUsername());
            		 ListaAppoggio.add(appoggio);
                  ...
                  return ListaAppoggio ;
    Alla fine chiamo il metodo di cui sopra che mi restituisce la lista che chiamo listaUtenti. Come faccio a farne una scansione?
    Pensavo che questo codice mi aiutasse :
    codice:
    		{for (Iterator<?> i = listaUtenti.iterator(); i.hasNext();)
    			System.out.println(i.next());}
    ma non riesco a stampare gli elementi immessi invece mi stampa cose tipo:
    componenti.TabellaUtenti@ad8659
    componenti.TabellaUtenti@ad8659
    componenti.TabellaUtenti@ad8659
    componenti.TabellaUtenti@ad8659

    non riesco bene a capire come manipolare le collezioni

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

    Re: [JAVA]scansione di una lista

    Originariamente inviato da _SC_
    ma non riesco a stampare gli elementi immessi invece mi stampa cose tipo:
    componenti.TabellaUtenti@ad8659
    componenti.TabellaUtenti@ad8659
    componenti.TabellaUtenti@ad8659
    componenti.TabellaUtenti@ad8659
    Se passi un oggetto al println(), esso usa il toString() dell'oggetto per tirare fuori una descrizione testuale dell'oggetto da mandare in output.
    L'output mostrato sopra è quello tipico fornito dal toString() di Object. In pratica vuol dire che nella classe di questo tuo oggetto non hai fatto l'override di toString().

    Se vuoi puoi fare l'override di toString(). Altrimenti l'oggetto che ti fornisce next() lo puoi castare al tuo tipo e quindi invocare eventuali metodi getXXX per ottenere i dati da stampare.

    EDIT: Non l'ho notato prima ma è meglio se ti segnalo subito 2 cose:
    a) Hai usato Iterator<?> ... a questo punto visto che usi i generics, usali in modo completo. Tipizza anche l'ArrayList e poi usa il ciclo for-each che è molto più comodo!

    b) Questo invece è un tuo errore concettuale: hai istanziato 1 solo oggetto TabellaUtenti e ad ogni record imposti i campi sempre dello stesso oggetto. Questo è sbagliato. Così facendo nel tuo ArrayList hai sì N elementi ma tutti fanno riferimento ad un unico singolo oggetto, che tra l'altro conterrà i dati dell'ultimo record.
    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
    Registrato dal
    Mar 2008
    Messaggi
    97

    Re: Re: [JAVA]scansione di una lista

    b) Questo invece è un tuo errore concettuale: hai istanziato 1 solo oggetto TabellaUtenti e ad ogni record imposti i campi sempre dello stesso oggetto. Questo è sbagliato. Così facendo nel tuo ArrayList hai sì N elementi ma tutti fanno riferimento ad un unico singolo oggetto, che tra l'altro conterrà i dati dell'ultimo record.
    Mi spieghi meglio questo punto?
    cioè ho capito che così:
    codice:
            	 while(rs.next()) {
             		appoggio=new TabellaUtenti();
            		appoggio.setPassword(rs.getString("password"));
            		appoggio.setUsername(rs.getString("utente"));
            		 ListaAppoggio.add(appoggio);
            		 }
    funziona. Mentre così no :
    codice:
           appoggio=new TabellaUtenti();
    
                    while(rs.next()) {
            		appoggio.setPassword(rs.getString("password"));
            		appoggio.setUsername(rs.getString("utente"));
            		 ListaAppoggio.add(appoggio);
                     }
    Non capisco il motivo concettuale.. ListaAppoggio non dovrebbe ogni volta prendersi il valore corrente?

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

    Re: Re: Re: [JAVA]scansione di una lista

    Originariamente inviato da _SC_
    Non capisco il motivo concettuale.. ListaAppoggio non dovrebbe ogni volta prendersi il valore corrente?
    La variabile 'appoggio' è 1 sola ed è inizializzata 1 sola volta. L'oggetto istanziato è 1 solo. Il reference è sempre lo stesso e nella lista hai N elementi tutti uguali, cioè N reference allo stesso oggetto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.