Methoden Sortieren: java.util.Arrays.useLegacyMergeSort

SilencerandLois

Aktives Mitglied
Hallo,
ich bin dabei, ein Softwareprojekt auf Java 7 umzustellen.
Bei der Sortierung von Collections wird nun ein anderer Sortieralgorithmus verwendet. Hier wird nun bei mir folgende Fehlermeldung geworfen

Java:
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.ComparableTimSort.mergeLo(ComparableTimSort.java:714)
at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:451)
at java.util.ComparableTimSort.mergeCollapse(ComparableTimSort.java:374)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:182)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:472)
at java.util.Collections.sort(Collections.java:155)

Ich habe zwar durch Google einen Lösgungsvorschlag gefunden, weiß jedoch nicht, wie ich diesen Umsetzen sollte. Es wurde vorgeschlagen, in einer Property-Datei den Wert java.util.Arrays.useLegacyMergeSort auf true zu setzen. Welche Property-Datei ist jedoch damit gemeint?


Und vor allem: Warum tritt an sich die Fehlermeldung auf? Die zu sortierende Klasse implementiert das Comparable-Interface


Besten Dank für eure Rückmeldung und viele Grüße,
Martin
 
S

SlaterB

Gast
die Fehlermeldung klingt, als wäre die Sortierung nicht konsistent, denn das ist so ziemlich der einzige Contract der einzuhalten ist,

inkonsistent wäre, wenn x < y gilt und gleichzeitig y < x wenn man andersrum vergleicht, oder equals ergibt true, compare aber nicht 0 usw.,
siehe auch Doku in der Klasse selber
Comparable (Java Platform SE 6)

poste doch deine Klasse mit dem compare,

--------
ansonsten:

-Djava.util.Arrays.useLegacyMergeSort=true
solltest du sonst wohl beim Start als Parameter übergeben,
unter Eclipse Run, Run Configurations, rechts die Reiter durchgehen bis du 'VM arguments' findest
 
Zuletzt bearbeitet von einem Moderator:

SilencerandLois

Aktives Mitglied
Hallo,
danke für die schnelle Rückmeldung.

Meine Compare-Methode sieht wie folgt aus:

Java:
  public int compareTo(Attribut attribut) {
      if (getSortierungObject() != null && attribut.getSortierungObject() != null) {
        return getSortierung() < attribut.getSortierung() ? -1 : 1;
      }
      else {
        if (getSortierungObject() != null) {
          return -1;
        }
        else {
          return 1;
        }
      }
    }

Die Methode getSortierungObject() liefert dabei ein Integer-Objekt, die Methode getSortierung() den entsprechenden int-Wert.

Viele Grüße,
Martin
 
S

SlaterB

Gast
das sieht nach einem klassischen Fall aus,
wenn beide null haben wird -1 zurückgegeben, egal in welcher Reihenfolge,
also entgegengesetze Bewertung der Reihenfolge wenn man den Aufruf umdreht (x.compareTo(y), y.compareTo(x)),

prüfe ob bei beiden null ist und gibt dann 0 für Gleichheit zurück,
oder falls du eine absolute Reihenfolge ohne Gleichheit brauchst, dann gib z.B. jedem erzeugen Objekt eine interne Id

Java:
private static int count;
private int number =count++;
und sortiere nachrangig (wenn beide null haben) nach der number

-------

auch der Fall
getSortierung() == attribut.getSortierung()
könnte so ein Problem sein

------

bedenke auch Aufrufe der Art x.compareTo(x), ein Objekt wird mit sich selber verglichen,
dann sollte in jedem Fall 0 zurückgegeben werden, da hilft auch keine Id (bzw. die wäre dann ja auch gleich)
 
Zuletzt bearbeitet von einem Moderator:

SilencerandLois

Aktives Mitglied
Hallo SlaterB,
danke für die Rückmeldung. Deine Bemerkungen haben weiter geholfen. Jedenfalls funktioniert die Sortierung nun an dieser Stelle korrekt. Da ich nun weiß, was zu machen ist, sollten die anderen Stellen ähnlich funktionieren.


Viele Grüße,
Martin

P.S.: Dann wollen wir nun mal hoffen, dass Rostock Meister wird ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
K Java sortieren. Java Basics - Anfänger-Themen 7
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
T Java: Array monat absteigend sortieren? Java Basics - Anfänger-Themen 1
G mache aus Test nach sortieren estt oder java aajv Java Basics - Anfänger-Themen 5
J Klassen java.lang.String - lexikographisches Sortieren Java Basics - Anfänger-Themen 5
T java xml sortieren Java Basics - Anfänger-Themen 21
B Sortieren mit Java[ Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
O Sortieren mit Insertion Sort Java Basics - Anfänger-Themen 3
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
J Tabelle Sortieren Java Basics - Anfänger-Themen 48
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Sortieren Java Basics - Anfänger-Themen 1
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
L Array sortieren Java Basics - Anfänger-Themen 4
B Liste sortieren? Java Basics - Anfänger-Themen 4
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
O Arrays sortieren in einer Methode Java Basics - Anfänger-Themen 2
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
B Suchen und sortieren Java Basics - Anfänger-Themen 10
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
O Zweidimensional Array sortieren Java Basics - Anfänger-Themen 14
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
CptK Variablen Teile eines Arrays zufällig sortieren Java Basics - Anfänger-Themen 7
K Methoden Array[][] sortieren Java Basics - Anfänger-Themen 30
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
E ArrayList sortieren Java Basics - Anfänger-Themen 16
L Methode zum sortieren Java Basics - Anfänger-Themen 1
L Methode zum sortieren Java Basics - Anfänger-Themen 1
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
A Sortieren ausgerechneter Werte aus einer TXT Datei Java Basics - Anfänger-Themen 8
E LMC (Assembler) Sortieren von 3 Zahlen Java Basics - Anfänger-Themen 4
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
A Array sortieren Java Basics - Anfänger-Themen 1
N StringArray alphabetisch sortieren Java Basics - Anfänger-Themen 4
Tommy135 Erste Schritte JavaDoc Sortieren Java Basics - Anfänger-Themen 5
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
M Arrays sortieren und kleinster Abstand Java Basics - Anfänger-Themen 3
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
N TreeMap alphabetisch sortieren? Java Basics - Anfänger-Themen 3
I <List> sortieren Java Basics - Anfänger-Themen 2
F Interface Nach mehreren Kriterien sortieren Java Basics - Anfänger-Themen 2
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
I Sortieren nach Priorität Java Basics - Anfänger-Themen 3
S List<T<X,Y> sortieren Java Basics - Anfänger-Themen 5
W Array sortieren Java Basics - Anfänger-Themen 3
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
Alex/89 Werte einer .txt Datei sortieren Java Basics - Anfänger-Themen 8
N Bubble Sort sortieren mit Int Werte Java Basics - Anfänger-Themen 8
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
S array sortieren Java Basics - Anfänger-Themen 7
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
D Methoden int-Array absteigend sortieren Java Basics - Anfänger-Themen 8
C Chars in einem String alphabetisch sortieren Java Basics - Anfänger-Themen 1
C OOP array Sortieren ohne den sort Befehl Java Basics - Anfänger-Themen 10
S int-Array mittels Arrays.sort() in einer Schleife sortieren. Java Basics - Anfänger-Themen 2
J Sortieren Java Basics - Anfänger-Themen 21
O Erste Schritte TreeMap nach Value sortieren Java Basics - Anfänger-Themen 2
K Collections Sortieren nach zweiter Spalte in JTable Java Basics - Anfänger-Themen 18
H Strings vergleichen & sortieren Java Basics - Anfänger-Themen 20
J Ungewolltes Sortieren eines Arrays Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben