Eu preciso de um código que me de uma ordem cronologica de um array de numeros inteiros data e um numero inteiro correspondente deste genero este não funciona
if(!(data[i][2]<=ano ||data[i][1]<=mes||data[i][0]<=dia) )
import java.util.Arrays;
import java.util.Comparator;
public class DatasComoArrays {
public static void main(String[] args) {
DatasComoArrays programa = new DatasComoArrays();
programa.executar();
}
private static final int DIA = 0;
private static final int MES = 1;
private static final int ANO = 2;
public void executar() {
int[][] datas = carregarDatas();
System.out.println("ANTES DE ORDENAR:");
imprimir(datas);
Comparator<int[]> comparador = (data1, data2) -> comparar(data1, data2);
Arrays.sort(datas, comparador);
System.out.println("DEPOIS DE ORDENAR:");
imprimir(datas);
}
private int[][] carregarDatas() {
int[][] datas = new int[][] {
new int[] { 28, 10, 2088 },
new int[] { 7, 3, 1989 },
new int[] { 3, 2, 1950 },
new int[] { 30, 7, 2000 },
new int[] { 6, 5, 1997 },
new int[] { 1, 1, 2020 },
new int[] { 18, 4, 1999 },
new int[] { 10, 6, 2015 },
new int[] { 27, 8, 2010 },
new int[] { 15, 9, 1981 },
new int[] { 12, 12, 1944 }
};
return datas;
}
private void imprimir(int[][] datas) {
for (int[] data : datas) {
System.out.printf(" %02d/%02d/%02d%n", data[DIA], data[MES], data[ANO]);
}
}
private int comparar(int[] data1, int[] data2) {
int diferenca = data1[ANO] - data2[ANO]; // compara os anos
if (diferenca == 0) { // se os anos são iguais
diferenca = data1[MES] - data2[MES]; // compara os meses
if (diferenca == 0) { // se os meses são iguais
diferenca = data1[DIA] - data2[DIA]; // compara os dias
}
}
return diferenca; // retorna a diferença
}
}
Saída do programa:
ANTES DE ORDENAR:
28/10/2088
07/03/1989
03/02/1950
30/07/2000
06/05/1997
01/01/2020
18/04/1999
10/06/2015
27/08/2010
15/09/1981
12/12/1944
DEPOIS DE ORDENAR:
12/12/1944
03/02/1950
15/09/1981
07/03/1989
06/05/1997
18/04/1999
30/07/2000
27/08/2010
10/06/2015
01/01/2020
28/10/2088
1 curtida