Classificar array 2D em Java
-
Use
java.util.Arrays.sort(T[] a, Comparator<? super T> c)
para classificar um array 2D dada coluna sábia -
Use
java.util.Arrays.sort(T[] a)
para classificar array 2D com base na linha
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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn