Classificar array 2D em Java

Rupam Yadav 12 outubro 2023
  1. Use java.util.Arrays.sort(T[] a, Comparator<? super T> c) para classificar um array 2D dada coluna sábia
  2. Use java.util.Arrays.sort(T[] a) para classificar array 2D com base na linha
Classificar array 2D em Java

Neste tutorial, aprenderemos como classificar um array 2D em Java. um array 2D é un array cujos elementos são arrays 1-D. Os elementos em un array 2D são organizados em linhas e colunas na forma de un array.

Use java.util.Arrays.sort(T[] a, Comparator<? super T> c) para classificar um array 2D dada coluna sábia

java.util.Arrays.sort(T[] a, Comparator<? super T> c) é um dos poucos métodos utilitários fornecidos pela classe Arrays. Este método classifica a matriz especificada de acordo com a ordem acionada pelo comparador especificado. Os elementos no array devem ser mutuamente comparáveis, portanto, não devem lançar uma ClassCastException.

Aqui, multi é um array bidimensional em forma de array que possui três linhas e três colunas. Classificaremos este array tomando sua terceira coluna como referência.

Passamos uma implementação da interface java.util.Comparator para o método Arrays.sort(). A interface Comparator define um método compare que compara seus dois argumentos para o pedido. Ele retorna zero se os objetos passados ​​forem iguais. Ele retorna um valor positivo se primeiro [columnNumber-1] for maior que second[columnNumber-1]. Caso contrário, ele retorna um valor negativo.

A terceira coluna de multi tem 8, 2 e 6 como elementos. Ele compara esses valores e altera a ordem do array 2D em ordem crescente.

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;
      }
    });
  }
}

Resultado:

4 9 8 
7 5 2 
3 0 6 
after sorting
7 5 2 
3 0 6 
4 9 8 

Use java.util.Arrays.sort(T[] a) para classificar array 2D com base na linha

Aqui no código, array[][] é um array 2D. Possui 4 linhas e 4 colunas. Classificaremos a linha individual deste array usando o método Arrays.sort() que leva um array como argumento. Este método classifica a matriz especificada em ordem numérica crescente.

O método sortRowWise executa um loop for até o comprimento do nosso array. Ele pega uma linha individual de array[][] e a classifica em ordem crescente, mostrada na saída.

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;
  }
}

Resultado:

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

Artigo relacionado - Java Array