Sobes.tech
Junior — Middle

Kādi ir galvenie principi starp equals un hashCode metodēm Java valodā?

sobes.tech AI

Atbilde no AI

Galvenie principi saistībā starp equals un hashCode Java valodā:

  • Ja divi objekti ir vienādi pēc equals, tad to hashCode ir jābūt vienādām.
  • Ja divu objektu hashCode ir atšķirīgs, tad equals noteikti jāatgriež false.
  • Ja equals atgriež false, hashCode var sakrist, bet tas nav vēlams, jo tas pasliktina hash struktūru veiktspēju.

Tas nodrošina pareizu kolekciju, kas izmanto hash (HashMap, HashSet), darbību, kur hashCode nosaka grozu, bet equals – precīzu objektu salīdzinājumu.

Piemērs:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Person person = (Person) obj;
    return Objects.equals(id, person.id);
}

@Override
public int hashCode() {
    return Objects.hash(id);
}

Šeit equals un hashCode balstās uz to pašu lauku – id, nodrošinot to saskaņotību.