Hola Cappello,
Tu entendimiento es correcto. En Java, el método contains() de la clase Collection utiliza internamente el método equals() para determinar si un objeto específico está presente en la colección.
Cuando no sobrescribes el método equals(), la implementación predeterminada en la clase Object se utiliza, la cual compara las referencias de los objetos, no sus valores. Esto significa que dos objetos se considerarán iguales solo si son exactamente el mismo objeto (es decir, tienen la misma referencia).
Cuando sobrescribes el método equals(), puedes definir tu propia lógica para determinar cuándo dos objetos deben considerarse iguales. En tu caso, has sobrescrito equals() para comparar los valores de los objetos, no sus referencias. Por lo tanto, después de sobrescribir equals(), el método contains() comparará los valores de los objetos, no las referencias.
Por ejemplo, si tienes una clase Cuenta con los campos agencia y numero, podrías sobrescribir equals() de la siguiente manera:
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null || getClass() != obj.getClass())
return false;
Cuenta cuenta = (Cuenta) obj;
return agencia == cuenta.agencia && numero == cuenta.numero;
}
Ahora, si tienes dos objetos Cuenta con los mismos valores para agencia y numero, pero son diferentes objetos (es decir, tienen diferentes referencias), el método contains() los considerará iguales porque estás comparando sus valores, no sus referencias.
Espero que esta explicación te haya ayudado a aclarar tus dudas. Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.
¡Vamos juntos!
Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios.