Heim  >  Artikel  >  Java  >  Sortieren Sie ein 2D-Array basierend auf den Werten in einer beliebigen Spalte in Java

Sortieren Sie ein 2D-Array basierend auf den Werten in einer beliebigen Spalte in Java

WBOY
WBOYnach vorne
2023-08-29 21:01:03908Durchsuche

Ein Array ist eine lineare Datenstruktur, die zum Speichern einer Reihe von Elementen mit ähnlichen Datentypen verwendet wird. Es speichert Daten sequentiell. Sobald wir ein Array erstellt haben, können wir seine Größe nicht mehr ändern, d. h. es hat eine feste Länge.

Angenommen, wir haben ein 2D-Array der Ordnung M x M, wobei M die Anzahl der Zeilen und Spalten ist. Wir müssen die angegebene Spalte des angegebenen Arrays sortieren. In diesem Artikel werden wir versuchen, die Lösung für das gegebene Problem zu finden.

Sortieren Sie ein 2D-Array basierend auf Spaltenwerten

Sortieren bedeutet, die Elemente einer bestimmten Liste oder eines Arrays in aufsteigender oder absteigender Reihenfolge neu anzuordnen. Lassen Sie uns anhand der folgenden visuellen Darstellung verstehen, was es bedeutet –

Beispiel 1

Wenn wir die erste Spalte dieses 2D-Arrays sortieren -

Sortieren Sie ein 2D-Array basierend auf den Werten in einer beliebigen Spalte in Java

Syntax eines zweidimensionalen Arrays

// declaration with size
Data_Type nameOfarray[][] = new Data_Type[sizeofrow][sizeofcolumn]; 
Or,
// declaration and initialization
Data_Type nameOfarray[][] = { {values separated by comma} }; 

Wir können jede der oben genannten Syntaxen in unserem Programm verwenden.

Anstelle von Data_Type können wir primitive Datentypen wie int und double angeben. Zeile und Spalte sind die gewünschten Array-Größen.

Bevor wir mit dem Eingriff beginnen, lassen Sie uns noch etwas besprechen.

Komparatorschnittstelle

Java bietet eine integrierte Methode namens sort(), um Arrays und Sammlungen in natürlicher Reihenfolge zu sortieren. Comparator ist eine allgemeine Schnittstelle, die wir verwenden können, wenn wir Elemente auf benutzerdefinierte Weise sortieren müssen. Im Grunde können wir die Sortierreihenfolge steuern. Die Schnittstelle definiert eine Methode ‘compare()‘, die zwei Parameter akzeptiert und vergleicht. Gibt 0 zurück, wenn die beiden Argumente gleich sind, einen positiven Wert, wenn das erste Argument größer als das zweite Argument ist, und andernfalls einen negativen Wert.

Grammatik

Comparator<typeOfelement> nameOfcollection = new Comaprator<typeOfelement>() {
   // your code here
};

Algorithmus

  • Schritt 1 – Definieren Sie die Methode „araySort()“ zusammen mit zwei Parametern in der Klasse „Srt“. Erstellen Sie in dieser Methode ein Objekt der Komparatorschnittstelle „comp“. Definieren Sie nun die Vergleichsmethode, die beide Zeilenarrays zusammen als Parameter verwendet.

  • Schritt 2 – Darüber hinaus verwenden wir einen if-else-Block, um die angegebenen Spaltenwerte zu vergleichen und 1 zurückzugeben, wenn das Element der ersten Spalte größer als das der zweiten Spalte ist, andernfalls geben wir -1 zurück.

  • Schritt 3 – Sortieren Sie nun das Array mit der Methode „Arrays.sort()“.

  • Schritt 4 – Verwenden Sie zwei for-Schleifen, um das neue sortierte Array zu drucken.

  • Schritt 5 – Schließlich deklarieren und initialisieren wir in der main()-Methode ein Array. Erstellen Sie weiterhin ein Objekt der Klasse „Srt“ und rufen Sie die Methode „araySort()“ mit „aray“ und Spaltenindex als Parameter auf.

Beispiel

import java.util.*;
class Srt {
   void araySort(int aray[][], int cl) {
      Comparator<int[]> comp = new Comparator<int[]>() {
         public int compare(int[] val1, int[] val2) {
            if(val1[cl-1] > val2[cl-1]) {
               return 1;
            } else {
               return -1;
            }
         }
      };
      Arrays.sort(aray, comp);
      System.out.println("The sorted array: ");
      for(int i = 0; i< aray.length; i++) {
         for (int j = 0; j < aray[i].length; j++) {
            System.out.print(aray[i][j] + " ");
         }
         System.out.println();
      }
   }
}
public class Sorting {
   public static void main(String[] args) {
      int aray[][] = { { 7, 2, 1, 3 }, { 6, 1, 3, 7 }, { 4, 9, 8, 0 }, { 8, 0, 1, 2 } };
      System.out.println("The given array we have: ");
      // for each loop to print original 2D array
      for (int[] array : aray) {
         for (int print : array) {
            System.out.print(print + " ");
         } 
         System.out.println();
      }
      Srt obj = new Srt();
      // calling method using object
      obj.araySort(aray, 1);
      obj.araySort(aray, 3);
   }
}

Ausgabe

The given array we have: 
7 2 1 3 
6 1 3 7 
4 9 8 0 
8 0 1 2 
The sorted array: 
4 9 8 0 
6 1 3 7 
7 2 1 3 
8 0 1 2 
The sorted array: 
8 0 1 2 
7 2 1 3 
6 1 3 7 
4 9 8 0

Fazit

Ein zweidimensionales Array ist ein Array mit Zeilen und Spalten. In diesem Artikel haben wir ein Java-Programm erstellt, um ein zweidimensionales Array basierend auf den Werten einer bestimmten Spalte zu sortieren. Wir haben gesehen, wie man ein Array oder eine Sammlung mithilfe der integrierten Methode „compare()“ der Comparator-Schnittstelle sortiert.

Das obige ist der detaillierte Inhalt vonSortieren Sie ein 2D-Array basierend auf den Werten in einer beliebigen Spalte in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen