Visualizzazione dei risultati da 1 a 4 su 4

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2016
    Messaggi
    10
    Ho provato a dichiarare il nuovo comparatore come nested class nella classe Contenitore
    codice:
    public class Contenitore {
    
        TreeSet<Prodotto> set;
    
    
        public Contenitore() {
             this.set = new TreeSet<Prodotto>();
        }
    
    
        public static  class PriceComp implements Comparator<Prodotto> {
            public int compare(Prodotto a, Prodotto b) {
                return a.price.compareTo(b.price);
            }
        }
        
        
        public static void  stampacollezione(TreeSet<Prodotto> set)
        {
            set=new TreeSet<Prodotto>(new PriceComp());
            for(Prodotto t:set)
            {
                System.out.println(t.toString());
            }
            
            
        }
        
        public static void stampa(TreeSet<Prodotto> set)
        {
            for(Prodotto t:set)
            {
                System.out.println(t.toString());
            }
        }
    
    
        public static void main(String[] args) {
            Prodotto a = new Prodotto(345.2, 45);
            Prodotto b = new Prodotto(745.2, 45);
            Prodotto c = new Prodotto(945.2, 45);
            Prodotto d = new Prodotto(345.2, 55);
            Prodotto e = new Prodotto(845.2, 45);
    
    
            Contenitore g = new Contenitore();
            // g.set=new TreeSet<Prodotto>();
            g.set.add(a);
            g.set.add(b);
            g.set.add(c);
            g.set.add(d);
            g.set.add(e);
    
    
            stampacollezione(g.set);
    
    
            stampa(g.set);
        
                    
        }
    
    
    }
    ho dichiarato static la classe PriceComp nel Contenitore e non ci sono errori di compliazione,
    ma stranamente la stampa della collezione ordinata per prezzo non avviene al contrario di quella standard ordinata per ID mediante comparable...
    Ultima modifica di Nasio91; 13-07-2018 a 15:09

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Nasio91 Visualizza il messaggio
    codice:
        public static void  stampacollezione(TreeSet<Prodotto> set)
        {
            set=new TreeSet<Prodotto>(new PriceComp());
            for(Prodotto t:set)
            {
                System.out.println(t.toString());
            }
        }
    stampacollezione riceve il TreeSet popolato (ordinato per ID). Poi al parametro set assegni un nuovo TreeSet, che è inizialmente (e resta) VUOTO, solo configurato per avere il criterio dato da PriceComp.
    Ultima modifica di andbin; 14-07-2018 a 10:20
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java 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 © 2026 vBulletin Solutions, Inc. All rights reserved.