Sobes.tech
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);