Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] duda en Comparando Elementos

hola q tal la consulta mia es sobre el final del video ( Comparando Elementos) donde el profesor crea una referencia cc3 con los mismos parametros que cc, cc3 no estaria imprimiendo cuando crea el boolean contiene pero si le hacemos el lista.add(cc3) si imprime, la duda seria por que?

1 respuesta

Hola Serrano, espero que estés bien.

Cuando crea una nueva referencia cc3 con los mismos parámetros que cc. Sin embargo, al imprimir cc3 usando lista.contains(cc3), no se muestra nada. Esto se debe a que contains compara las referencias de los objetos en el ArrayList, no los valores de los parámetros.

En tu caso, aunque cc3 tiene los mismos parámetros que cc, no se considera igual a cc porque son referencias diferentes. Por lo tanto, contains no encuentra una coincidencia y no se imprime nada.

Si quieres que contains compare los valores de los parámetros en lugar de las referencias, tendrías que sobrescribir el método equals en la clase CuentaCorriente. En el método equals, puedes definir cómo se debe comparar dos objetos de la clase CuentaCorriente en base a los valores de sus parámetros:

@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj == null || getClass() != obj.getClass()) {
        return false;
    }
    CuentaCorriente other = (CuentaCorriente) obj;
    return this.numeroAgencia == other.numeroAgencia && this.numeroCuenta == other.numeroCuenta;
}

Con esta implementación del método equals, contains comparará los valores de los parámetros numeroAgencia y numeroCuenta en lugar de las referencias de los objetos.

Espero que esto aclare tu duda. Si tienes alguna otra pregunta, no dudes en preguntar.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios