Salve a tutti, sto studiando Java per un esame universitario e ho alcuni dubbi sull'utilizzo dei Treeset, un particolare esercizio chiede di scegliere un contenitore adatto per contenere un dato di tipo Prodotto caratterizzato dai parametri ID e Price che abbia ID univoci tenendo conto che l'operazione più frequente è la stampa ordinata per prezzo.
Per avere l'univocità ho scelto un TreeSet e ho implementato l'interfaccia comparable necessaria per questo tipo di contenitore.
Ora il problema è che comparable fornisce solo un metodo di comparazione che popola di elementi univoci il Set e lo ordina secondo il parametro scelto.
Il quesito chiede di organizzare i dati in due classi separate di mio ho fatto così:
codice:
public class Prodotto implements Comparable<Prodotto> {
private Double price;
private Integer id;
public Prodotto(double price, int id)
{
this.price=price;
this.id=id;
}
public int compareTo(Prodotto p)
{
return this.id.compareTo(p.id);
}
public String toString()
{
String s= new String ("prodotto"+price+"id"+id);
return s;
}
public class PriceComp implements Comparator<Prodotto>
{
public int compare(Prodotto a,Prodotto b)
{
return a.price.compareTo(b.price);
}
}
public class IdComp implements Comparator<Prodotto>
{
public int compare(Prodotto a,Prodotto b)
{
return a.id.compareTo(b.id);
}
}
codice:
public class Contenitore {
TreeSet<Prodotto> set;
public Contenitore(){
//this.set = new TreeSet<Prodotto>();
}
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);
g.set=new TreeSet<Prodotto>(new PriceComp()); //da errore
}
}
Ho pensato che potessi definire un nuovo comparatore per ordinare il set secondo il parametro prezzo per poi stamparlo, ma purtroppo il metodo non viene riconosciuto dalla classe contenitore. Come potrei fare dunque a stampare a video il TreeSet che contiene ID univoci ma ordinato per prezzo?