Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    [java] scorrere ArrayList

    codice:
    import java.util.ArrayList;
    import java.util.Random;
    
    public class Corriere {
    
    	
    	public static void main(String[] args) {
    		
    		ArrayList<Spedizioni> sped = new ArrayList<Spedizioni>();
    		
    		int cid;
    		
    		for (int i=0; i<1000;i++){
    			
    			Random rnd = new Random();
    		int tipo = rnd.nextInt(3);
    		//destinazione
    		String dest = Integer.toString(rnd.nextInt(100));
    			
    		
    		switch (tipo){
    		case 0:
    			 cid = rnd.nextInt(2000);
    			double pes = (double)rnd.nextInt(300);
    			sped.add(new Casse(cid, dest, pes));
    		break;
    		
    		case 1:
    			 cid = rnd.nextInt(2000);
    			float x = (float)rnd.nextInt(20);
    			float y = (float)rnd.nextInt(20);
    			float z = (float)rnd.nextInt(20);
    			
    			sped.add(new Scatole(cid, dest, x, y, z));
    		break;	
    	
    		case 2:
    			 cid = rnd.nextInt(2000);
    			boolean exp = rnd.nextBoolean();
    			sped.add(new Buste(cid, dest, exp));
    		break;
    		}
    		}
    		
    		
    
    			for (Spedizioni e : sped){
    			System.out.println(e.getCodiceID());
    					
    				
    				
    				}}
    			
    	
    		
    	}

    da come si legge c'è una superclasse Spedizioni con figli Casse, Scatole e Buste
    come posso stampare il codice ID (cid) di tutte e 1000 le spedizioni?
    il for each su arrayList funziona?così com'è non funziona niente..dv ho sbagliato?

    psvviamente il metodo getcodiceID non ha altro che ritornare l'argomento richiesto.

  2. #2
    Ti conviene usare l'iteratore.....

    Codice PHP:
    Iterator it sped.iterator();

    while(
    it.hasNext()){
    // con (Spedizioni) it.next() recuperi gli oggetti dell collezzione

    ciao

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [java] scorrere ArrayList

    Originariamente inviato da ant_alt
    il for each su arrayList funziona?così com'è non funziona niente..dv ho sbagliato?

    Si, il for-each funziona anche su ArrayList.

    Qual è il tuo problema? Non stampa nulla, da errore, stampa roba strana?


    Una nota: l'oggetto Random istanzialo fuori dal for. Il costruttore du default di Random usa il tempo corrente come seme di generazione. Come lo hai scritto te usa sempre lo stesso seme per tutte e 1000 le volte e pertanto dovresti ottenere sempre la stessa sequenza casuale :master:

    edit

    Originariamente inviato da hurricane86
    Ti conviene usare l'iteratore.....

    codice:
    Iterator it = sped.iterator();
    
    while(it.hasNext()){
    // con (Spedizioni) it.next() recuperi gli oggetti dell collezzione
    }
    ciao
    Meglio, potrebbe sfruttare i generici ed il polimorfismo:

    codice:
    Iterator<Spedizioni>  it = sped.iterator();
    
    while(it.hasNext()) {
       Spedizioni s = it.next();
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Oppure semplicemente potresti fare: System.out.printf ("%s", e.getCodiceID());

  5. #5
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    Re: Re: [java] scorrere ArrayList

    Originariamente inviato da Alex'87
    Si, il for-each funziona anche su ArrayList.

    Qual è il tuo problema? Non stampa nulla, da errore, stampa roba strana?


    Una nota: l'oggetto Random istanzialo fuori dal for. Il costruttore du default di Random usa il tempo corrente come seme di generazione. Come lo hai scritto te usa sempre lo stesso seme per tutte e 1000 le volte e pertanto dovresti ottenere sempre la stessa sequenza casuale :master:

    edit



    Meglio, potrebbe sfruttare i generici ed il polimorfismo:

    codice:
    Iterator<Spedizioni>  it = sped.iterator();
    
    while(it.hasNext()) {
       Spedizioni s = it.next();
    }

    la soluzione col l'iteratore non l'ho mai vista al corso (o mi è sfuggita )
    cmq preferisco evitare..


    l'oggetto random l'ho istanziato sempre nel for..e non ho capito bene qual è l'inconveniente..usa lo stesso seme?(mi sa che è più una questione di pulizia del codice in quanto su un altro eserczio funziona sia dentro che fuori dal for)


    vorrei provare la soluzione di dreamer89
    xò non ricordo qual è il "carattere di formattazione" dell'int (codiceID è un intero non una stringa)
    ma è possibile che sia questo?


    cmq per chi chiedeva cosa mi stampa ora, mi stampa 1000 volte "0" stampando e.getCodiceID.


    ______________

    una volta risolta la questione di stampare correttamente un codiceID random,
    vi anticipo quello che dovrei fare:
    scorrere l'arrayList un pezzo alla volta, ovvero:
    -stampare i primi 100 elementi e rimuoverli dall'arrayList- per 10 volte (quindi fino alla fine dell'elenco)
    quindi non credo che il for each vada bene a meno che non ci sia un metodo a me sconosciuto per bloccarlo dopo i primi 100 elementi

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: [java] scorrere ArrayList

    Originariamente inviato da ant_alt
    l'oggetto random l'ho istanziato sempre nel for..e non ho capito bene qual è l'inconveniente..usa lo stesso seme?(mi sa che è più una questione di pulizia del codice in quanto su un altro eserczio funziona sia dentro che fuori dal for)
    Così istanzi 1000 volte un oggetto Random nel giro di pochi millisecondi. Random usa il numero di millisecondi trascorsi dal 1 gennaio 1970 (System.currentTimeMillis()) per inizializzarsi e scegliere il punto da cui far partire la sequenza di numeri pseudo-casuali. I 1000 cicli vengono eseguiti molto velocemente, ed il numero di millisecondi potrebbe non cambiare. Il risultato è che viene usato lo stesso seme per quasi tutti i cicli. In teoria questo dovrebbe causare la generazione della stessa sequenza di numeri pseudo-casuali.

    Originariamente inviato da ant_alt
    vorrei provare la soluzione di dreamer89
    xò non ricordo qual è il "caratteri di formattazione" dell'int (codiceID è un intero non una stringa)
    %d
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    Re: Re: Re: Re: [java] scorrere ArrayList

    Originariamente inviato da Alex'87
    ho messo fuori dal for
    Random rnd = new Random();


    e stampato così
    System.out.printf("%d", e.getCodiceID());

    continua a stamparmi solo 0

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: Re: Re: [java] scorrere ArrayList

    Originariamente inviato da ant_alt
    ho messo fuori dal for
    Random rnd = new Random();


    e stampato così
    System.out.printf("%d", e.getCodiceID());

    continua a stamparmi solo 0
    1. La mia puntualizzazione non era per risolvere il problema.
    2. Allora forse il problema è nel metodo getCodiceID() o nel costruttore della classe...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.