java : TreeSet-Sammlung und Vergleichbare Schnittstelle
Habe ich folgenden code :
Ich bin versucht, insert-Item-Objekt in TreeSet und ich bin nicht immer der Wunsch Ausgabe.
public class Main
{
public static void main(String a[])
{
Item i1=new Item(1,"aa");
Item i2=new Item(5,"bb");
Item i3=new Item(10,"dd");
Item i4=new Item(41,"xx");
Item i5=new Item(3,"x5");
TreeSet t=new TreeSet();
t.add(i1);
t.add(i2);
t.add(i3);
t.add(i4);
t.add(i5);
System.out.println(t);
}
}
class Item implements Comparable<Item>
{
String nm;
int price;
public Item(int n,String nm)
{
this.nm=nm;
price=n;
}
public int compareTo(Item i1)
{
if(price==i1.price)
return 0;
else if(price>=i1.price)
return 1;
else
return 0;
}
public String toString()
{
return "\nPrice "+price+" Name : "+nm;
}
}
Ausgabe :
[ Preis-1 Name : aa,
Preis 5 Name : bb,
Preis 10 Name : dd,
Preis 41 Name : xx ]
Item i5=new Item(3,"x5");
ist nicht Eingefügt, warum?
Warum kann ich tun, um einfügen in TreeSet.
Was Ihr TreeSet Größe?
InformationsquelleAutor mcacorner | 2012-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht umgesetzt
compareTo()
richtig. Hier ein Auszug aus der javadoc:Ihre Umsetzung nicht zurück
-1
im Falle Preis des aktuellen Objekts ist weniger als der Preis des Objekts, das Sie vergleichen mit.InformationsquelleAutor Andrew Logvinov
In Ihrem
compareTo
Methode sollten Sieelse return -1;
!InformationsquelleAutor Muel
In
compareTo
ersetzen:mit:
InformationsquelleAutor Mordechai
Einer Klasse die
Comparable
müssen im Einklang mit dem Vertrag: wenna.compareTo(b) < 0
dannb.compareTo(a) > 0
. Deins nicht genügen.InformationsquelleAutor onon15
Main problem ist in deiner compareTo-Methode. Sie implementiert eine falsche Logik. Ich habe änderungen an Ihrer Klasse und getestet bei meinem eclipse ist es Angabe des gewünschten output. betrachten Sie folgenden code.
InformationsquelleAutor Rais Alam