Hallo zusammen,
ich habe folgende Klasse gegeben:
In der Methode compareTo sollen zwei Objekte der Klasse Liste verglichen werden. Dabei handelt sich sich um Elemente einer Bestenliste, welche absteigend sortiert wird.
Als Definition zu der compareTo Methode steht in der Beschreibung zum Programm folgendes geschrieben:
Bei aufsteigender Sortierung muss ein Wert größer als 0 geliefert werden, wenn der aktuelle Wert kleiner ist als der "andere". Ist der "andere" Wert kleiner als der erste, muss einer Wert kleiner als 0 geliefert werden.
Bei absteigender Sortierung ist es genau andersherum: Ist der aktuelle Wert größer als der zweite, muss ein Wert kleiner als 0 geliefert werden, andernfalls ein Wert größer als 0. Sind die beiden Werte gleich, muss sowohl bei aufsteigender als auch bei absteigender Sortierung der Wert 0 zurückgegeben werden.
Ist das nicht das gleiche:
Wenn ich die aufsteigende Sortierung betrachte:
aktuellerWert < andererWert; return 1
aktuellerWert > andererWert; return -1
aktuellerWert == andererWert; return 0
Wenn ich die absteigende Sortierung betrachte:
aktuellerWert > andererWert; return -1
aktuellerWert < andererWert; return 1
aktuellerWert == andererWert; return 0
Das ist doch das gleiche, oder verstehe ich da was falsch?
ich habe folgende Klasse gegeben:
Java:
class Liste implements Comparable<Liste> {
private int listePunkte;
private String listeName;
//der Konstruktor
//er ruft die MEthode setzeEintrag() auf
public Liste(int listePunkte, String listeName) {
setzeEintrag(listePunkte, listeName);
}
//die überschriebene Vergleichsmethode
//die Rückgabewerte steuern die Sortierung
@Override
public int compareTo(Liste tempList) {
// TODO Auto-generated method stub
if(this.listePunkte < tempList.listePunkte)
return 1;
if(this.listePunkte > tempList.listePunkte)
return -1;
else
return 0;
}
//die Methode setzt Einträge in der Liste
public void setzeEintrag(int listePunkte, String listeName) {
this.listeName = listeName;
this.listePunkte = listePunkte;
}
//die Methode liefert die Punkte
public int getListePunkte() {
return listePunkte;
}
//die Methode liefert den Namen
public String getListeName() {
return listeName;
}
}
In der Methode compareTo sollen zwei Objekte der Klasse Liste verglichen werden. Dabei handelt sich sich um Elemente einer Bestenliste, welche absteigend sortiert wird.
Als Definition zu der compareTo Methode steht in der Beschreibung zum Programm folgendes geschrieben:
Bei aufsteigender Sortierung muss ein Wert größer als 0 geliefert werden, wenn der aktuelle Wert kleiner ist als der "andere". Ist der "andere" Wert kleiner als der erste, muss einer Wert kleiner als 0 geliefert werden.
Bei absteigender Sortierung ist es genau andersherum: Ist der aktuelle Wert größer als der zweite, muss ein Wert kleiner als 0 geliefert werden, andernfalls ein Wert größer als 0. Sind die beiden Werte gleich, muss sowohl bei aufsteigender als auch bei absteigender Sortierung der Wert 0 zurückgegeben werden.
Ist das nicht das gleiche:
Wenn ich die aufsteigende Sortierung betrachte:
aktuellerWert < andererWert; return 1
aktuellerWert > andererWert; return -1
aktuellerWert == andererWert; return 0
Wenn ich die absteigende Sortierung betrachte:
aktuellerWert > andererWert; return -1
aktuellerWert < andererWert; return 1
aktuellerWert == andererWert; return 0
Das ist doch das gleiche, oder verstehe ich da was falsch?