¿Cómo comparar las matrices de objetos usando Arrays.equals () en java?

en este ejemplo que muestra cómo hacerlo:

Student[] stud1 = new Student[2];
Student[] stud2 = new Student[2];
Student[] stud3 = new Student[2];
boolean b;
stud1[0]= new Student("Johnny","Bravo");
stud1[1]= new Student("Ace","Ventura");
stud2[0]= new Student("Ash","Ketchum");
stud2[1]= new Student("Mike","Wazowski");
b = Arrays.equals(stud1,stud2);
System.out.println(b);
stud2 [0] = stud1[0];
stud2[1] = stud1[1];
b = Arrays.equals(stud1,stud2);
System.out.println(b); 
stud3 = stud1;
b = Arrays.equals(stud1,stud3);
System.out.println(b);
}

El resultado es falso verdadero verdadero . ¿Qué es exactamente Arrays.equals comparando? Gracias.

Respuesta 1

Directamente de los documentos :

Devuelve truesi las dos matrices especificadas Objectsson iguales entre sí. Las dos matrices se consideran iguales si ambas matrices contienen el mismo número de elementos, y todos los pares de elementos correspondientes en las dos matrices son iguales. Dos objetos e1y e2se consideran iguales si (e1==null ? e2==null : e1.equals(e2)). En otras palabras, las dos matrices son iguales si contienen los mismos elementos en el mismo orden. Además, dos referencias de matriz se consideran iguales si ambas lo son null.

Eso prácticamente lo explica todo. En su caso, el primer resultado es falseporque stud1y stud2tiene instancias Studentque no son iguales. En el segundo caso, las dos matrices tienen objetos idénticos y, por lo tanto, se prueban como iguales. En el tercer caso, stud1y stud3son el mismo objeto, por lo tanto, también son iguales.

El único caso interesante sería si Studenttuviera un equals()método y quisiera probar dos matrices que tenían Studentobjetos equivalentes pero no idénticos :

Student[] stud1 = {
    new Student("Johnny","Bravo")
};
Student[] stud2 = {
    new Student("Johnny","Bravo")
};
System.out.println(Arrays.equals(stud1, stud2));

Aquí el resultado dependería de la implementación de Student.equals().

Respuesta: 2

array1.equals(array2)es lo mismo que array1 == array2, es decir, es la misma matriz.

Arrays.equals(array1, array2) compara el contenido de las matrices.

Respuesta: 3

Aquí está mi código: class Question extiende Thread {información de cadena estática; Pregunta pública (información de cadena) {this.info = info; } vacío privado inProtected () {...

Estoy leyendo datos de la base de datos vertica usando múltiples hilos en java. Tengo alrededor de 20 millones de registros y estoy abriendo 5 subprocesos diferentes que tienen consultas seleccionadas como esta ... start = threadnum; ...

Tengo problemas para descubrir cómo encontrar la aparición de los números dentro de una matriz 2D. Soy nuevo en Java, así que tengo que hacer este programa sin usar mapas / soluciones avanzadas. Ejemplo: dado ...

Un ejemplo rápido es una colección del nombre y apellido de los usuarios. Un método requiere que compare usando el primer nombre, otro usando el apellido. ¿Es posible tener dos compareTo () diferentes? ...