Methoden Array[][] sortieren

Guten Abend,
ich habe eine Frage zur sortierung von Arrays, die Beispiele die ich gefunden habe beziehen sich immer auf ein Spaltige Arrays. Ich habe jedoch eins mit zwei Spalten und n Zeilen.
Das ganze sieht etwa so aus:
upload_2018-9-27_19-30-36.png
Das ganze soll dann am Ende so aussehen:
upload_2018-9-27_19-32-53.png
Es gibt die Array.sort() Methode, jeodch weiss ich nicht wie ich diese nur auf die zweite Spalte anwende.
Das ganze soll zur Darstellung der max-, und minimalen Spannung angewendet werden, daher muessen auch die Zahlen vorne mit sortiert werden. Ausgegeben werden soll dann 5 2,6 und 3 234,1.

Gruss Kai
 

Robat

Top Contributor
Du kannst die überladene Arrays.sort(T[] a, Comparator<? super T> c) Methode benutzen
Java:
double[][] data = {
  {0.0, 17.5}, {1.0, 4.35}, {2.0, 4.58},
  {3.0, 234.1}, {4.0, 12.5}, {5.0, 2.6},
};
 
Arrays.sort(data, Comparator.comparingDouble(a -> a[1]));
 
for(double[] x : data) {
  System.out.println(Arrays.toString(x));
}
 
X

Xyz1

Gast
@Robat , ein "nachteil" ist auch, das hier dann in der letzten Zeile der main alles um die Ohren fliegt und das nicht umgangen werden kann:
Java:
public static void main(String[] args) {
    int c = 1;
    double[][] a = {
        {0, 17.5},
        {1, 4.35},
        {2, 4.58},
        {3, 234.1},
        {4, 12.5},
        {5, 2.6},};
    Arrays.sort(a, Comparator.comparing((t) -> t[c]));
    System.out.println(Arrays.deepToString(a));
    System.out.println(Arrays.deepToString(sort(a, 1)));
}

static Comparable[][] sort(Comparable[][] a, int c) {
    Arrays.sort(a, Comparator.comparing((t) -> t[c]));
    return a;
}


Das ganze soll zur Darstellung der max-, und minimalen Spannung angewendet werden
das glaube ich sofort....
 

Robat

Top Contributor
@DerWissende Was soll wem um die Ohren fliegen?
Edit: Oder meinst du damit das du deiner Methode das Array nicht übergeben kannst? Dann nimm eben keine primitiven Datentypen wenn du es so machen willst
 
X

Xyz1

Gast
Warum denn nicht? Genau für so etwas gibt's die Wrapper-Klassen doch.
In C++ geht das....

das müsstest du mir auch mal genauer erklären. Warum genau löst das das Problem nicht??
Schreib mal eine Methode die zwei Parameter hat ein beliebiges primitives 2D Array das sortiert werden soll und ein Column nach der sortiert werden soll. Das Array beinhaltet nur primitive, comparable Typen.
Du wirst feststellen: Das geht nicht....

apache commons lang hätte zwar ein https://commons.apache.org/proper/c...ons/lang3/ArrayUtils.html#toObject-boolean:A- aber auch das funktioniert nicht mit 2Ds....

Aber versuche es ich lass mich gerne überraschen :)
 

mihe7

Top Contributor
Java:
static <T extends Comparable<? super T>> T[][] sort(T[][] a, int c) {
    Arrays.sort(a, Comparator.comparing((t) -> t[c]));
    return a;
}
 
X

Xyz1

Gast
Danke für die superschnelle antwort....

und wie kann ich nun ein double[][] da hinein dengeln?
 

mihe7

Top Contributor
@DerWissende Hm... Du wolltest es nicht anders...
Java:
    static double[][] sort(double[][] a, int c) {
        Arrays.sort(a, Comparator.comparing(t -> t[c]));
        return a;
    }
:p
 

Meniskusschaden

Top Contributor
In C++ geht das....
Was denn bloß?
Schreib mal eine Methode die zwei Parameter hat ein beliebiges primitives 2D Array das sortiert werden soll und ein Column nach der sortiert werden soll. Das Array beinhaltet nur primitive, comparable Typen.
Aha. Es geht also nicht mehr um das Problem des TE, sondern um das allgemeine Ärgernis in Java, dass primitive Datentypen und Klassen nicht einheitlich abgebildet sind? Ja, das ist manchmal blöd.
 
Danke für diese vielen Antworten, ich habe ein bischen rumgebastelt und es hat geklappt. Leider meint mein Prof das ich das mit einer Schleife selber machen soll, ohne
Code:
Comparator.comparing(t -> t[c])
.
Ich habe zwei Test Klassen gemacht, um erstmal ausserhalb des Programms zu probieren.
Klasse Array mit einem eindimensionalen Array:
Java:
package Testing;

import java.util.*;

public class Array {

   double[] a;

   public static void main(String[] args) {
       double[] a = { 2.0, 6.0, 3.0 };

       System.out.println("Arrays von a: " + Arrays.toString(a));

       a.sortArray();

   }

}

SortArray Klasse
Java:
package Testing;

public class ArraySort {

   private double sortArray(double[] sigma) {

       int minK = 0;
       int maxK = 0;
       double minSigma = sigma[0];
       double maxSigma = sigma[1];

       for (int i = 1; i < sigma.length; i++) {
           double s = sigma[i];
           if (s < minSigma) {
               minK = i;
               minSigma = s;
           }
       }
       return minSigma;

   }
}
Ich bekomme eine Fehlermeldung bei dem Befehl
Java:
 a.sortArray(a)
Cannot invoke sortArray() on the array type double[], ich weiss aber nicht warum.
Warum zur Hoelle kann ich die Methode sortArray nicht auf das Array anweden ?
Mit
Java:
 private double sortArray(double[] sigma)
habe ich doch den Eingabetyp double[] sigma (lokale Variable) deklariert, der Rueckgabewert ist double.
 

Tarrew

Top Contributor
Dein sortArray ist eine Methode der Klasse "ArraySort".

Also probiers mal mit "new ArraySort().sortArray(a)" nachdem du die Sichtbarkeit der Methode angepasst hast.
 
Zuletzt bearbeitet:
Nein, es funktioniert nicht, keine Ahnung, in der Vorlseung haben wir mit eine ähnliche Übung mit Vektoren gemacht. Ich habe den Quelltext angepasst und es geht nicht.
Java:
package Testing;

import java.util.*;

public class ArrayTest {

   public static void main(String[] args) {

       double[] Array = { 6.0, 17.0, 4.0, 3.0 };

       System.out.println("Array von a: " + Arrays.toString(Array));

       Array.print("Array von a: ");

   }

}
Java:
package Testing;

public class Array {

   private double[] a;

   public Array(double[] a) {
       this.a = a;
   }

   public void print(String s) {
       System.out.println(s + a[0]);
   }

   public double sortArray(double[] sigma) {

       int minK = 0;
       int maxK = 0;
       double minSigma = sigma[0];
       double maxSigma = sigma[1];

       for (int i = 1; i < sigma.length; i++) {
           double s = sigma[i];
           if (s < minSigma) {
               minK = i;
               minSigma = s;
           }
       }
       return minSigma;
   }

}
Auch bei der print Methode "Cannot invoke print(String) on the array type double[]" Warum, was soll das ich will doch einfach nur Methode zugreifen ?
 

Tarrew

Top Contributor
Java:
  double[]Array = { 6.0, 17.0, 4.0, 3.0 };

Deine Variable ist vom Typ "double[]". Und double[] kennt keine "print" Methode.

Nur weil die Variable "Array" heißt, hat das absolut nichts mit deiner Klasse "Array" zu tun.

Wie schon gesagt, musst du die Methode an deiner eigenen Klasse aufrufen:
Java:
        double[] Array = { 6.0, 17.0, 4.0, 3.0 };

        System.out.println("Array von a: " + Arrays.toString(Array));

        new Array(Array).print("Array von a: ");

Die Benamsung von deinen Varialben und Klassen widerspricht übrigens sämtlichen Konventionen und Good-Practices, aber das kannste dann später noch anpassen ;)
 
@Tarrew
Danke für deine ausführliche Antwort. Ich glaube ich habe es jetzt ein wenig verstanden.
upload_2018-9-28_18-50-0.png
Ich erzeuge keine Eigeneklasse (Array) sondern eine vorgefertigte.
Die Zeiger sind so korrekt eingezeichnet ?
upload_2018-9-28_18-51-44.jpeg
Das heisst dann ein Objekt vom Typ Array.java wieder erzeugt, dabei wird das Array mit dem Variablenname Array übergeben ? Meine Namensgebung ist wirklich jenseits von gut und böse.

@DerWissende
https://de.wikipedia.org/wiki/Spannung , es gibt auch die mechanische Spannung.
Ich habe dich nicht angelogen, ihr macht mir keine Hausaufgaben, keine sorge.
 

Tarrew

Top Contributor
Deine beiden Pfeile sind korrekt. Machts natürlich etwas einfacher, wenn man die Variable umbennent und zwei verschiedene Namen hat ;)
 
Ä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
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
R Array sortieren Java Basics - Anfänger-Themen 12
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