compareTo - Sortierung nach 2 Argumenten

Status
Nicht offen für weitere Antworten.

Flora

Mitglied
Hallo liebe Community,

nach erfolglosen Suchen im Internet glaube ich, dass ihr mir helfen könnt. Es geht um die Sortierung eines High Scores, der mit einer compareTo-Methode im LevelScore-Object sortiert werden soll. Und das zuerst nach der Levelnummer und dann nach den benötigten Schritten, die der Spieler getan hat.

Bei folgendem Code sortiert er allerdings nur nach der Levelnummer:

[HIGHLIGHT="Java"]public int compareTo(LevelScore compareObject)
{
if (this.getLevelNumber() == compareObject.getLevelNumber())
return 0;
else if (this.getLevelNumber() < compareObject.getLevelNumber())
return 1;


if (this.getLevelStepps() == compareObject.getLevelStepps())
return 0;
else if (this.getLevelStepps() > compareObject.getLevelStepps())
return -1;
return 1;
}[/HIGHLIGHT]

Wo ist der Fehler?

Vielen lieben Dank

die Flora
 

Ebenius

Top Contributor
So geht's:
[HIGHLIGHT="Java"]public int compareTo(LevelScore compareObject) {
final int level1 = this.getLevelNumber();
final int level2 = compareObject.getLevelNumber();
if (level1 == level2) {
final int steps1 = this.getLevelStepps();
final int steps2 = compareObject.getLevelStepps();
return steps1 > steps2 ? -1 : (steps1 == steps2 ? 0 : 1);
} else if (level1 < level2) {
return 1;
} else {
return -1;
}
}[/HIGHLIGHT]
Anbei: "Steps" mit einem 'p'.

Ebenius
 
M

maki

Gast
@Ebenius
[HIGHLIGHT="Java"]public int compareTo(LevelScore that) {
final int level1 = this.getLevelNumber();
final int level2 = that.getLevelNumber();
if (level1 == level2) {
return this.getLevelStepps() - that.getLevelStepps();
} else {
return level1 - level2 ;
}
}[/HIGHLIGHT]
 

Ebenius

Top Contributor
@Ebenius
[HIGHLIGHT="Java"]public int compareTo(LevelScore that) {
final int level1 = this.getLevelNumber();
final int level2 = that.getLevelNumber();
if (level1 == level2) {
return this.getLevelStepps() - that.getLevelStepps();
} else {
return level1 - level2 ;
}
}[/HIGHLIGHT]
Liebe maki,

stimmt. Aber nur wenn Levels und Steps nicht negativ sein dürfen. Diese einschränkende Bedingung kam nirgends. Aus dem Grund hab ich den allgemeingültigen Integer-Vergleich genommen.

Anbei: Aus dem Eingangsbeitrag entnahm ich, dass der Comparator anders herum sortieren soll. Ob das stimmt weiß ich nicht.

Ebenius
 
S

SlaterB

Gast
wer so anfängt..

Code:
    public int compareTo(LevelScore that)
    {
        int c = this.getLevelNumber() - that.getLevelNumber();
        return c != 0 ? c : this.getLevelStepps() - that.getLevelStepps();
    }

> Aber nur wenn Levels und Steps nicht negativ sein dürfen.

hast du da ein Beispiel? ich meine, das müsste klappen

5 > 4 sowie 5-4 = 1
-3 > -4 sowie -3 - -4 = 1
 
Zuletzt bearbeitet von einem Moderator:

Ebenius

Top Contributor
> Aber nur wenn Levels und Steps nicht negativ sein dürfen.

hast du da ein Beispiel? ich meine, das müsste klappen

5 > 4 sowie 5-4 = 1
-3 > -4 sowie -3 - -4 = 1
[HIGHLIGHT="Java"]System.out.println(Integer.MAX_VALUE / 2 - Integer.MIN_VALUE / 2);
System.out.println(Integer.MAX_VALUE - Integer.MIN_VALUE);[/HIGHLIGHT]
Gibt aus:
Code:
2147483647
-1
 
S

SlaterB

Gast
naja, das erinnert mich ja an manche Sonder-Zeitzonen-Berücksichtigung ;)
aber ok, kommt hin
 

Ebenius

Top Contributor
Nachtrag: Integer.compareTo() machts auch so. Man sollte sich's lieber gleich angewöhnen. ;)
[HIGHLIGHT="Java"]/**
* Compares two <code>Integer</code> objects numerically.
*
* @param anotherInteger the <code>Integer</code> to be compared.
* @return the value <code>0</code> if this <code>Integer</code> is
* equal to the argument <code>Integer</code>; a value less than
* <code>0</code> if this <code>Integer</code> is numerically less
* than the argument <code>Integer</code>; and a value greater
* than <code>0</code> if this <code>Integer</code> is numerically
* greater than the argument <code>Integer</code> (signed
* comparison).
* @since 1.2
*/
public int compareTo(Integer anotherInteger) {
int thisVal = this.value;
int anotherVal = anotherInteger.value;
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}[/HIGHLIGHT]

Ebenius
 

Flora

Mitglied
@ice-breaker: na, auf die idee bin ich net gekommen. aber da hätt ich ja net den beispielcode einfach posten können, oder? jetzt funktioniert es auf jeden fall :)

@ebenius: ja, habe deinen code dann noch in der "sortierreihenfolge" umgedreht.

@rest: interessante beiträge noch^^
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Cassy3 Generics - CompareTo Java Basics - Anfänger-Themen 21
J compareTo()- und equals-Methode Java Basics - Anfänger-Themen 3
X compareTo Methode wird ignoriert Java Basics - Anfänger-Themen 7
O compareTo nach mehreren Kriterien Java Basics - Anfänger-Themen 13
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
B Methoden compare() und compareTo() Java Basics - Anfänger-Themen 1
P compareTo() Java Basics - Anfänger-Themen 3
C compareTo verwenden Java Basics - Anfänger-Themen 2
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
J Sortier alternativen mit der compareTo Methode? Java Basics - Anfänger-Themen 6
J TreeSet mit compareTo sortieren Java Basics - Anfänger-Themen 2
K compareTo(String arg) überschreiben Java Basics - Anfänger-Themen 4
N Compiler-Fehler Comparable / compareTo implementierung Java Basics - Anfänger-Themen 2
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
S compareTo() und equals() Java Basics - Anfänger-Themen 6
A Objekte aus 2 Klassen mit compareTo() vergleichen Java Basics - Anfänger-Themen 7
K CompareTo zwei mal benutzen klappt nicht. Java Basics - Anfänger-Themen 2
1 HILFE! Strings mit CompareTo vergleichen Java Basics - Anfänger-Themen 3
R compareTo & equals Java Basics - Anfänger-Themen 10
T Methoden Wie compareTo() Methode implementieren? Java Basics - Anfänger-Themen 9
T Strings mit compareto vergleichen und array sortieren Java Basics - Anfänger-Themen 14
P Generischer Binärbaum (compareTo Frage) Java Basics - Anfänger-Themen 4
J Probleme mit Comparable, compareTo() Java Basics - Anfänger-Themen 2
R compareTo Liste sortieren Java Basics - Anfänger-Themen 5
L compareTo bei Strings? Java Basics - Anfänger-Themen 4
D OOP mit compareTo Array sortieren (aus zwei Klassen) Java Basics - Anfänger-Themen 3
T compareTo warum geht es nicht? Java Basics - Anfänger-Themen 2
W compareTo für 3 Strings Java Basics - Anfänger-Themen 11
M compareTo-Sortierungsproblem Java Basics - Anfänger-Themen 16
G in compareTo umschreiben Java Basics - Anfänger-Themen 4
A Die "compareTo( )" methode Java Basics - Anfänger-Themen 16
J compareTo Java Basics - Anfänger-Themen 4
G compareTo Java Basics - Anfänger-Themen 12
T Wie geht das mit compareTo Java Basics - Anfänger-Themen 2
M o.compareTo(o) Java Basics - Anfänger-Themen 13
K compareTo in Verbinug mit Arrays.sort() Java Basics - Anfänger-Themen 4
Bierhumpen compareTo. Wie setze ich es ein Java Basics - Anfänger-Themen 11
R compareTo Java Basics - Anfänger-Themen 2
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
U Sortierung in collections testen Java Basics - Anfänger-Themen 11
A Sortierung Java Basics - Anfänger-Themen 18
G Java Sortierung Java Basics - Anfänger-Themen 3
P topologische Sortierung Java Basics - Anfänger-Themen 15
N Best Practice Ist die Sortierung richtig? Java Basics - Anfänger-Themen 3
M Topologische Sortierung Java Basics - Anfänger-Themen 1
S Sortierung Java Basics - Anfänger-Themen 4
K Sortierung eines int-Arrays von groß nach klein Java Basics - Anfänger-Themen 3
S Sortierung funktioniert nicht Java Basics - Anfänger-Themen 1
S Was ist schneller: direkte Sortierung oder indirekt ueber eine SortedMap..? Java Basics - Anfänger-Themen 10
F Collections Sortierung und Einfügen von Elementen Java Basics - Anfänger-Themen 1
L Lexikographische Sortierung eines Strings Java Basics - Anfänger-Themen 6
A Kleinste Ziffer im Array suchen um Sortierung zu erzeugen Java Basics - Anfänger-Themen 2
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
D Sortieren in Abhängigkeit von einer anderen Sortierung Java Basics - Anfänger-Themen 14
K Sortierung von Zahlen Java Basics - Anfänger-Themen 13
S Sortierung funktioniert nicht Java Basics - Anfänger-Themen 9
B Hiilfee! Step by Step sortierung eines Arrays... Java Basics - Anfänger-Themen 19
G Bubblesort - Falsche Sortierung Java Basics - Anfänger-Themen 6
T Datenstruktur für Sortierung Java Basics - Anfänger-Themen 4
S Collections Sortieren von 3 Collections nach "einer Sortierung" Java Basics - Anfänger-Themen 3
R Shellsort Sortierung Java Basics - Anfänger-Themen 5
K Sortierung von Anzahl der Wörtern in ArrayList Java Basics - Anfänger-Themen 4
U Alter Berechnung + sortierung Java Basics - Anfänger-Themen 6
H Sortierung eines String[][] mit Bedingung Java Basics - Anfänger-Themen 7
M Frage zur Sortierung Java Basics - Anfänger-Themen 8
S problem mit sortierung interface comperator Java Basics - Anfänger-Themen 11
B OOP Comparator - Sortierung "optisch" Darstellen Java Basics - Anfänger-Themen 17
F Treemap und Sortierung? Java Basics - Anfänger-Themen 2
L Random Sortierung Java Basics - Anfänger-Themen 9
A Sortierung (Gernerics & Liste) Java Basics - Anfänger-Themen 9
J Sortierung Java Basics - Anfänger-Themen 11
? hilfe bei Fehlersuche Sortierung List Java Basics - Anfänger-Themen 5
O Sortierung Denkanstoss Java Basics - Anfänger-Themen 7
G ArrayList mit ArrayList als Inhalt - komische Sortierung? Java Basics - Anfänger-Themen 12
P Brauche Hilfe bei Sortierung eines JTrees ! Java Basics - Anfänger-Themen 14
K Kurze Frage zur Sortierung von Array-Inhalten Java Basics - Anfänger-Themen 5
G String Sortierung nach mehreren Kriterien Java Basics - Anfänger-Themen 4
G Sortierung eines Arrays nach mehreren Kriterien Java Basics - Anfänger-Themen 6
Q HashMap Sortierung Java Basics - Anfänger-Themen 11
S Sortierung Rückgängig machen?! Java Basics - Anfänger-Themen 2
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
I Java Mail Timeout erst nach rund 5 Minuten? Java Basics - Anfänger-Themen 9
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33

Ähnliche Java Themen

Neue Themen


Oben