2D-Array in Java sortieren

Rupam Yadav 12 Oktober 2023
  1. Verwenden Sie java.util.Arrays.sort(T[] a, Comparator<? super T> c), um ein 2D-Array spaltenweise zu sortieren
  2. Verwenden Sie java.util.Arrays.sort(T[] a), um ein 2D-Array zeilenweise zu sortieren
2D-Array in Java 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 Yadav avatar Rupam Yadav avatar

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

Verwandter Artikel - Java Array