Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26

Discussione: interface Collection<>

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108

    interface Collection<>

    Ragazzi mi esce questo errore ma non capisco dove sbaglio.
    Praticamente ho la seguente classe
    codice:
    public class Cestino2 {
    
       private Collection<Prodotto2>  prodotti;
      // COSTRUTTORE VUOTO
        public Cestino2(){
    
        }
    
      // METODI
      //Aggiunge al cestino che esegue il metodo il prodotto specificato dall'argomento.
        public void add (Prodotto2 p){
            // riga 18
        	prodotti.add(p);
        }
    quando nel test faccio
    Cestino2 cestino = new Cestino2();
    // riga 19
    cestino.add(new Prodotto2("latte",2,50));
    mi esce il seguente errore
    codice:
    Exception in thread "main" java.lang.NullPointerException
    	at Cestino2.add(Cestino2.java:18)
    	at Prova.main(Prova.java:19)
    Ho creato anche una classe Prodotto e facendo i vari test funziona.

  2. #2
    Devi istanziare la collezione prodotti.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    come la faccio ad istanziare una Collection?

  4. #4
    Originariamente inviato da GianniMal
    come la faccio ad istanziare una Collection?
    Istanzi una classe concreta che implementa tale interfaccia.
    Ad esempio: ArrayList.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    Ho inserito nella classe Cestino
    private Collection<Prodotto2> prodotti;
    ArrayList<Prodotto2> prod = new ArrayList<Prodotto2>();

    però poi quando uno il metodo
    codice:
    public void add (Prodotto2 p){
          prod.add(p);
    }
    non uso la Collection definita prima che mi risulta inutile

  6. #6
    Originariamente inviato da GianniMal
    Ho inserito nella classe Cestino
    private Collection<Prodotto2> prodotti;
    ArrayList<Prodotto2> prod = new ArrayList<Prodotto2>();
    No, devi usare il polimorfismo di inclusione:
    codice:
    public class Cestino2 {
       private Collection<Prodotto2>  prodotti;
    
       public Cestino2() {
            prodotti = new ArrayList<Prodotto2>();
       }
         
        // ...
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    grazie mille

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    Sarò negato con le interfacce ma non capisco una cosa...il problema è stampare con Iterator.
    codice:
    Cestino2 cestino = new Cestino2();
    cestino.add(new Prodotto2("latte",2,50)); 
    cestino.add(new Prodotto2("pasta", 7.25));
    cestino.add(new Prodotto2("caffe' macinato", 5));
    cestino.add(new Prodotto2("caffe' macinato", 5));	 
    cestino.add(new Prodotto2("caffe' arabo", 8));	
    cestino.add(new Prodotto2("biscotti secchi",10));
    cestino.add(new Prodotto2("pacco biscotti formato famiglia", 18,40));
    
    //ArrayList<Prodotto2> prodotti = new ArrayList<Prodotto2>();
    //Iterator<Prodotto2> elenco = prodotti.iterator();
    		
    while(elenco.hasNext())
    	System.out.println(elenco.next());
    Allora la classe Cestino2 è composta così:
    codice:
    public class Cestino2 {
    
       private Collection<Prodotto2>  prodotti;
    
       public Cestino2(){
        	prodotti = new ArrayList<Prodotto2>();
        }
    
        public void add (Prodotto2 p){
        	prodotti.add(p);
        }
    adesso come faccio a stampare i prodotti del cestino??

  9. #9
    Originariamente inviato da GianniMal
    codice:
    public class Cestino2 {
    
       private Collection<Prodotto2>  prodotti;
    
       public Cestino2(){
        	prodotti = new ArrayList<Prodotto2>();
        }
    
        public void add (Prodotto2 p){
        	prodotti.add(p);
        }
    adesso come faccio a stampare i prodotti del cestino??
    Potresti pensare di aggiungere un metodo che restituisce l'iteratore della tua collezione:
    codice:
    public class Cestino2 {
       private Collection<Prodotto2>  prodotti;
    
       public Cestino2(){
        	prodotti = new ArrayList<Prodotto2>();
        }
    
        public void add (Prodotto2 p){
        	prodotti.add(p);
        }
    
        public Iterator<Prodotto2> iterator(){
            return prodotti.iterator();
        }
    }
    quindi:
    codice:
    public class Test{
          public static void main(String args[]){
                   Cestino2 cestino = new Cestino2();
                   cestino.add(new Prodotto2("latte",2,50)); 
                   cestino.add(new Prodotto2("pasta", 7.25));
                   cestino.add(new Prodotto2("caffe' macinato", 5));
                   cestino.add(new Prodotto2("caffe' macinato", 5));	 
                   cestino.add(new Prodotto2("caffe' arabo", 8));	
                   cestino.add(new Prodotto2("biscotti secchi",10));
                   cestino.add(new Prodotto2("pacco biscotti formato famiglia", 18,40));
                   
                   Iterator<Prodotto2> it = cestino.iterator();
                   while( it.hasNext() )
                           System.out.println( it.next() );
          }
    }
    N.B. La classe Prodotto2 deve ridefinire toString().

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    grazie mille.
    Adesso devo creare un metodo che mi elenca i prodotti con i prezzi maggiori di un prezzo passato come argomento
    codice:
    public Iterator<Prodotto2> elencoProdottiMaggioriDi(Prezzo2 prezzo){
        	for(....................){
        		if("se il prezzo del prodotto dell'elenco è > di prezzo"){
        			prodottiMax.add(....);
        		}
        	}
        	Iterator<Prodotto2>elenco = prodottiMax.iterator();
        	return elenco;
    }
    come faccio ad iterare l'elenco dei prodotti???
    Ho creato all'interno della classe una nuova collezione
    private Collection<Prodotto2> prodottiMax;
    che dovrà contenere i prodotti con il prezzo maggiore.

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.