public static void main(String[] args)
{
char [] d = {"a","b","c","d"};
char [] e = {"d","c","b","a"};
Arrays.sort(d);
Arrays.sort(e);
System.out.println(e); //console : abcd
System.out.println(d); //console : abcd
System.out.println(d.equals(e)); //console : false
}
Por que as matrizes são desiguais? Provavelmente estou perdendo alguma coisa, mas isso está me deixando louco. O resultado não deveria ser verdadeiro? E sim, eu importei o java.util.Arrays.
Respostas:
15 para resposta № 1O resultado não deveria ser verdadeiro?
Não. Você está ligando equals
em duas referências de matriz diferentes. Matrizes não substituem equals
, portanto, você obtém igualdade de referência. As referências não são iguais, portanto retorna falso ...
Para comparar os valores nas matrizes, use Arrays.equals(char[], char[])
.
System.out.println(Arrays.equals(d, e));
11 para resposta № 2
Matrizes fazem não sobrepor Object#equals()
. Usar:
Arrays.equals(d, e);
em vez disso, para executar uma comparação baseada em valor.
Contudo:
Arrays.equals
faz não trabalhar conforme o esperado para matrizes multidimensionais. Ele comparará as referências do primeiro nível de matrizes em vez de comparar todos os níveis. Referir-se este comentárioou use Arrays.deepEquals
da mesma maneira.