Ho provato a dichiarare il nuovo comparatore come nested class nella classe Contenitore
ho dichiarato static la classe PriceComp nel Contenitore e non ci sono errori di compliazione,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); } }
ma stranamente la stampa della collezione ordinata per prezzo non avviene al contrario di quella standard ordinata per ID mediante comparable...![]()

Rispondi quotando