Array sortieren

Status
Nicht offen für weitere Antworten.

ruppi

Mitglied
Hallo!
Mein Problem ist dass so einen array sortieren möchte: int[][].

In der Suche bin ich auf folgenden Quelltext gestossen:
Code:
public class ArrayComparator implements Comparator{ 
  public int compare( Object a, Object b ){ 
    int[] arrayA = (int[])a; 
    int[] arrayB = (int[])b; 

    return arrayA[0] - arrayB[0]; 
  } 
}

wenn ich dann folgendes mache:
Code:
int[][] array = ...  // dein Array 
Arrays.sort( array, new ArrayComparator() ); // sortieren

und mir den array dann ausgeben lasse ist dieser aber immernoch nicht sortiert!
Wie kann ich jetzt den Array sortieren!
Kann man auch nach 2 Kriterien sortieren lassen??

Gruß
ruppi
 

Leroy42

Top Contributor
Du willst ein 2-dimensionales int-Array, also eine Tabelle sortieren.
Deinem Comparator werden pro Vergleich jeweils 2 1-dimensionale
int-Arrays übergeben, was ja auch richtig ist. Und nach Definition
deines Comparators ist die Zeile 'a' kleiner(gleich/größer) als zeile 'b'
wenn der erste integer von Zeile 'a' kleiner(gleich/größer) als der erste
integer von Zeile 'b' ist. Hast du das beabsichtigt?

Ja, du kannst nach mehreren Kriterien sortieren. Aber was sind deine Kriterien.

Es wäre hilfreich wenn du den Inhalt deiner Tabelle mal beschreibst.
Am besten auch mit einem Beispiel.

Ich vermute daß dein 2-dim. int-Array eventuell keine ideale
Datenstruktur für das ist, was du abbilden möchtest.
 
G

Guest

Gast
Ich habe einen 2-Dimensionalen Array. Aus einer Datei werden Daten eingelesen und in dem Array gespeichert:
Die Datei sieht so aus


Position Eigenschaft1 Eigenschaft2 Eigenschaft3 ( habe insgesamt 7 Eigenschaften)
Position Eigenschaft1 Eigenschaft2 Eigenschaft3 usw. (Man sich diese Liste als Matrix vorstellen)

Alle Positionen und Eigenschaften sind Integerzahlen.
Bisher habe ich alle Daten einlesen können!
Das Problem ist das ich das ganze nach den Positionen sortieren muss um weitere Berechnungen durchführen zu können!

hier noch mal ein Beispiel einer Datei:

3 345 356 545
8 344 123 987
2 343 342 343
 

Leroy42

Top Contributor
Dann sollte dein Comparator eigentlich funktionieren.
Die Zeilen werden nach ihrer Positionsnummer sortiert.

Bei deiner Datenstruktur sehe ich aber nicht was
dein zweites Sortierkriterium sein könnte; die Eigenschaften
innerhalb einer Zeile? Dann kommst du mit deiner Datenstruktur
allerdings nicht weiter. Wie wär's mit
Code:
class Position implements Comparable {
  private int position;
  int[] properties;
  
  public int compareTo(Object o) {
    return position - ((Position) o).position;
  }
}
Dann kannst du ein Position[] positions einfach per Arrays.sort(positions)
sortieren. Die properties werden dann jeder für sich mit Arrays.sort(properties)
sortiert.
 

ruppi

Mitglied
Das zweite Kriterium ist auch eine Positionsangabe!
Die Position ist in zwei Werte aufgeteilt. Z.B. : 8 13 würde heißen Reihe 8 Position 13
 

Leroy42

Top Contributor
Code:
  public int compare( Object x, Object y ){ 
    int[] a = (int[])x; 
    int[] b = (int[])y; 

    return a[0]==b[0] ? a[1]-b[1] : a[0]-b[0] ; 
  }
 

ruppi

Mitglied
Hab es jetzt endlich geschafft den Array nach zwei Bedingungen zu sortieren!
Jetzt musste ich aber feststellen, dass es in meinem Fall Sinn macht nach drei Bedingungen zu sortieren !
Wie muss ich dann vorgehen?
 

ruppi

Mitglied
So geht es ja nicht ?!?
Code:
    return a[0]==b[0] ? a[2]-b[2] : a[0]-b[0]  ? a[1] - b[1] : a[0] -b[0];
 
R

Roar

Gast
vergleichen ob x > y oder x == y ist. ist zwar länger, dafür richtig
 

ruppi

Mitglied
kann noch nicht ganz folgen!
Um nach zwei Kriterien zu sortieren hab ich jetzt folgendes gemacht!

Code:
return a[0] ==b[0] ? a[1] >> b[1] : a[0] >> b[0];

Dabei wird aber nur nach dem ersten Kriteium sortiert nicht aber nach dem Zweiten
 

Leroy42

Top Contributor
Wenn "1. Kriterium liefert KEINE Entscheidung"
dann wenn "2. Kriterium liefert KEINE Entscheidung"
dann "Entscheidung 3. Kriterium"
sonst "Entscheidung 2. Kriterium"
sonst "Entscheidung 1. Kriterium"

Code:
int r;
if (a[0] == b[0])
    if (a[1] == b[1])
        r = a[2] - b[2]
    else
        r = a[1] - b[1]
else
    r = a[0] - b[0]
return r;
oder eben einfacher aber vielleicht unübersichtlicher mit tertiären Operatoren ?:
richtig geklammert.

Was bitte sehr soll a[0] >> b[0] hier bringen :autsch:

@roar: Wieso ist "return x-y;" falsch? Sind doch alles Integerwerte!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
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
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
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
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
L Array sortieren Java Basics - Anfänger-Themen 4
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
T Java: Array monat absteigend sortieren? Java Basics - Anfänger-Themen 1
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 Zweidimensional Array sortieren Java Basics - Anfänger-Themen 14
K Methoden Array[][] sortieren Java Basics - Anfänger-Themen 30
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
A Array sortieren Java Basics - Anfänger-Themen 1
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
W Array sortieren Java Basics - Anfänger-Themen 3
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 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
D Erste Schritte array aufsteigend sortieren und ausgeben Java Basics - Anfänger-Themen 17
C Werte im Array sortieren Java Basics - Anfänger-Themen 5
A Input/Output 2-dimensionales array sortieren Java Basics - Anfänger-Themen 3
J Array nach häufigkeit sortieren Java Basics - Anfänger-Themen 4
S Strings im Array nach Namen sortieren Java Basics - Anfänger-Themen 11
E Array sortieren, es will nicht Java Basics - Anfänger-Themen 6
B Problrm beim Array sortieren Java Basics - Anfänger-Themen 0
S Mehrdimensionales Array sortieren Java Basics - Anfänger-Themen 3
G Array mit BubbleSort sortieren Java Basics - Anfänger-Themen 2
F Array mit Zufallszahlen sortieren Java Basics - Anfänger-Themen 7
N Array sortieren Java Basics - Anfänger-Themen 6
J Methoden Einzelnen Wert aus Objekt aus einem Array auslesen und danach sortieren Java Basics - Anfänger-Themen 8
T Sortieren/Suche klappt nicht ganz (String Array) Java Basics - Anfänger-Themen 2
L Array Sortieren Java Basics - Anfänger-Themen 3
H Sortieren von Array Java Basics - Anfänger-Themen 7
K 2D-Array sortieren Java Basics - Anfänger-Themen 7
I Objekte in einem Array sortieren Java Basics - Anfänger-Themen 19
K Array sortieren Java Basics - Anfänger-Themen 19
P String Sortieren in einem Array Java Basics - Anfänger-Themen 7
T Strings mit compareto vergleichen und array sortieren Java Basics - Anfänger-Themen 14
B Array nach dem Alphabet sortieren Java Basics - Anfänger-Themen 11
J Array mit Objekten sortieren Java Basics - Anfänger-Themen 11
S Array sortieren NULL oder Empty ignorieren. Java Basics - Anfänger-Themen 9
S Array sortieren und ausgeben Java Basics - Anfänger-Themen 3
C zweidimensionales Array sortieren Java Basics - Anfänger-Themen 6
W Objekte in einer Array sortieren Java Basics - Anfänger-Themen 3
R 2D Array sortieren Java Basics - Anfänger-Themen 11
A String-Array lexikographisch sortieren Java Basics - Anfänger-Themen 6
A Array einer eigenen Klasse sortieren Java Basics - Anfänger-Themen 11
J 2D Array mit Zeilenverschiebung Sortieren Java Basics - Anfänger-Themen 15
B Zufällige Zahlen in Array sortieren Java Basics - Anfänger-Themen 18
c_sidi90 Array mit Bubblesort sortieren Java Basics - Anfänger-Themen 8
D OOP mit compareTo Array sortieren (aus zwei Klassen) Java Basics - Anfänger-Themen 3
E Array Sortieren Java Basics - Anfänger-Themen 3
B Array durchlaufen und sortieren Java Basics - Anfänger-Themen 9
L Einzeiler - String Array sortieren Java Basics - Anfänger-Themen 16
J Array aufsteigend sortieren Java Basics - Anfänger-Themen 10
D Array nach ungerade zahlen sortieren Java Basics - Anfänger-Themen 6
A Sortieren von Zahlen in einem Array Java Basics - Anfänger-Themen 13
T Zahlen in ARRAY Sortieren Java Basics - Anfänger-Themen 10
N sortieren zweier abhängiger array listen Java Basics - Anfänger-Themen 12
N Array sortieren - Java Basics - Anfänger-Themen 7
T Array mit Integern sortieren Java Basics - Anfänger-Themen 9
M Array anders sortieren, aber die Reihenfolge beibehalten Java Basics - Anfänger-Themen 4
kulturfenster Array mit Strings sortieren Java Basics - Anfänger-Themen 7
D Mehrdimensionales Array sortieren Java Basics - Anfänger-Themen 5
G Array List sortieren / auswerten Java Basics - Anfänger-Themen 24
B 2D-Array (Tabelle) alphabetisch sortieren Java Basics - Anfänger-Themen 6
S array nach 2 kriterien sortieren Java Basics - Anfänger-Themen 3
G 2D-Array sortieren Java Basics - Anfänger-Themen 11
M ArrayList in Array, dann sortieren Java Basics - Anfänger-Themen 15
R Array sortieren Java Basics - Anfänger-Themen 2
B 2D Array sortieren Java Basics - Anfänger-Themen 15
I Array sortieren oder Tabelle sortieren ? Java Basics - Anfänger-Themen 2
M 2-dimensionales Array sortieren Java Basics - Anfänger-Themen 2
R String-Array sortieren Java Basics - Anfänger-Themen 12
P Array verkleinern und sortieren Java Basics - Anfänger-Themen 11
I Zahlen in Array schreiben und dann sortieren Java Basics - Anfänger-Themen 7
G float-Array _ohne_ Arrays.sort sortieren Java Basics - Anfänger-Themen 5
P Array füllen & sortieren Java Basics - Anfänger-Themen 3
J Array sortieren Java Basics - Anfänger-Themen 4
M Array mit Werten füllen und sortieren Java Basics - Anfänger-Themen 2
O Array sortieren Java Basics - Anfänger-Themen 3
D erste spalte eines zweidimensionales Array sortieren ??!! Java Basics - Anfänger-Themen 2
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48

Ähnliche Java Themen

Neue Themen


Oben