2D-Array in Java sortieren
-
Verwenden Sie
java.util.Arrays.sort(T[] a, Comparator<? super T> c)
, um ein 2D-Array spaltenweise zu sortieren -
Verwenden Sie
java.util.Arrays.sort(T[] a)
, um ein 2D-Array zeilenweise zu sortieren
In diesem Tutorial werden wir lernen, wie man ein 2D-Array in Java sortiert. Ein 2D-Array ist ein Array, dessen Elemente 1-D-Arrays sind. Die Elemente in einem 2D-Array sind in Zeilen und Spalten in Form einer Matrix angeordnet.
Verwenden Sie java.util.Arrays.sort(T[] a, Comparator<? super T> c)
, um ein 2D-Array spaltenweise zu sortieren
java.util.Arrays.sort(T[] a, Comparator<? super T> c)
ist eine der wenigen Utility-Methoden, die von der Klasse Arrays
zur Verfügung gestellt werden. Diese Methode sortiert das angegebene Array entsprechend der Reihenfolge, die durch den angegebenen Komparator ausgelöst wird. Die Elemente im Array müssen untereinander vergleichbar sein und sollten daher keine ClassCastException
werfen.
Hier ist multi
ein 2-dimensionales Array in Matrixform, das drei Zeilen und drei Spalten hat. Wir werden dieses Array sortieren, indem wir seine dritte Spalte als Referenz nehmen.
Wir übergeben eine Implementierung der Schnittstelle java.util.Comparator
an die Methode Arrays.sort()
. Die Schnittstelle Comparator
definiert eine Methode compare
, die ihre beiden Argumente auf Reihenfolge vergleicht. Sie gibt Null zurück, wenn die übergebenen Objekte gleich sind. Sie gibt einen positiven Wert zurück, wenn first[columnNumber-1]
größer ist als second[columnNumber-1]
. Andernfalls gibt es einen negativen Wert zurück.
Die dritte Spalte von multi
hat 8, 2 und 6 als Elemente. Es vergleicht diese Werte und ändert die Reihenfolge des 2D-Arrays in aufsteigender Reihenfolge.
import java.util.Arrays;
import java.util.Comparator;
public class Sort2DArray {
public static void main(String args[]) {
int[][] multi = new int[][] {
{4, 9, 8},
{7, 5, 2},
{3, 0, 6},
};
for (int i = 0; i < multi.length; i++) {
for (int j = 0; j < multi[i].length; j++) System.out.print(multi[i][j] + " ");
System.out.println();
}
// sort according to 3 column
Sort2DArrayBasedOnColumnNumber(multi, 3);
System.out.println("after sorting");
for (int i = 0; i < multi.length; i++) {
for (int j = 0; j < multi[i].length; j++) System.out.print(multi[i][j] + " ");
System.out.println();
}
}
public static void Sort2DArrayBasedOnColumnNumber(int[][] array, final int columnNumber) {
Arrays.sort(array, new Comparator<int[]>() {
@Override
public int compare(int[] first, int[] second) {
if (first[columnNumber - 1] > second[columnNumber - 1])
return 1;
else
return -1;
}
});
}
}
Ausgabe
4 9 8
7 5 2
3 0 6
after sorting
7 5 2
3 0 6
4 9 8
Verwenden Sie java.util.Arrays.sort(T[] a)
, um ein 2D-Array zeilenweise zu sortieren
Hier im Code ist array[][]
ein 2D-Array. Es hat 4 Zeilen und 4 Spalten. Wir werden die einzelnen Zeilen dieses Arrays mit der Methode Arrays.sort()
sortieren, die ein Array als Argument annimmt. Diese Methode sortiert das angegebene Array in aufsteigender numerischer Reihenfolge.
Die Methode sortRowWise
führt eine for
-Schleife bis zur Länge unseres Arrays aus. Sie nimmt eine einzelne Zeile von array[][]
und sortiert sie in aufsteigender Reihenfolge, wie in der Ausgabe gezeigt.
import java.util.Arrays;
public class Sort2DArray {
public static void main(String args[]) {
int array[][] = {{7, 8, 2, 1}, {0, 3, 2, 9}, {6, 5, 3, 2}, {8, 3, 7, 9}};
sortRowWise(array);
}
static int sortRowWise(int arr[][]) {
// One by one sort individual rows.
for (int i = 0; i < arr.length; i++) {
Arrays.sort(arr[i]);
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) System.out.print(arr[i][j] + " ");
System.out.println();
}
return 0;
}
}
Ausgabe
1 2 7 8
0 2 3 9
2 3 5 6
3 7 8 9
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn