Junior — Middle
102
Java-да hashCode() және equals() әдістерінің сәйкестігі қалай қамтамасыз етіледі және бұл неге маңызды?
AI-дан жауап
sobes.tech AI
Java-да hashCode() және equals() әдістері сәйкес келуі керек, себебі коллекциялар, мысалы HashMap немесе HashSet, дұрыс жұмыс істеуі үшін. Ережелер:
- Егер екі объект тең болса, онда олардың equals() нәтижесі true болуы керек, ал олардың hashCode() мәндері бірдей болуы керек.
- Егер екі объектінің hashCode() мәндері әртүрлі болса, онда олардың equals() нәтижесі міндетті түрде false болуы керек.
Бұл маңызды, себебі хэш-кестелер алдымен hashCode() көмегімен тез іздеуді жүзеге асырады, содан кейін нақты салыстыру үшін equals() пайдаланады. Бұл шартты бұзу коллекциялар дұрыс жұмыс істемеуіне әкелуі мүмкін.
Мысал:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return id == person.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}