Intern
O que é simetria?
sobes.tech IA
Resposta da IA
A simetria em Java refere-se à propriedade da relação de comparação (equals() e hashCode()) entre objetos. Se a.equals(b) for verdadeiro, então b.equals(a) também deve ser. A violação desta regra leva a um comportamento imprevisível nas coleções.
class MyObject {
private int value;
public MyObject(int value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyObject myObject = (MyObject) o;
return value == myObject.value;
}
@Override
public int hashCode() {
return Objects.hash(value);
}
}
// Exemplo demonstrando a simetria
MyObject obj1 = new MyObject(10);
MyObject obj2 = new MyObject(10);
// Se obj1.equals(obj2) for verdadeiro,
// então obj2.equals(obj1) também deve ser.
boolean symmetric = obj1.equals(obj2) == obj2.equals(obj1);