Intern
Mi a szimmetria?
sobes.tech MI
Válasz az MI-től
A szimmetria Java-ban az összehasonlítás (equals() és hashCode()) kapcsolatának tulajdonságára utal az objektumok között. Ha a.equals(b) igaz, akkor b.equals(a) is igaz kell legyen. Ennek a szabálynak a megsértése kiszámíthatatlan viselkedést eredményez a gyűjteményekben.
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);
}
}
// Példa, amely bemutatja a szimmetriát
MyObject obj1 = new MyObject(10);
MyObject obj2 = new MyObject(10);
// Ha az obj1.equals(obj2) igaz,
// akkor az obj2.equals(obj1) is igaz kell legyen.
boolean symmetric = obj1.equals(obj2) == obj2.equals(obj1);