Sobes.tech
Junior — Middle

HashMap-те кілттердің мінез-құлқына equals әдісі қалай әсер ететінін түсіндіріңіз.

sobes.tech AI

AI-дан жауап

HashMap-те кілттер хеш-код түрінде сақталады, бірақ кілттің бірегейлігін анықтау үшін equals әдісі пайдаланылады. Элемент іздеу немесе қосу кезінде алдымен кілттің хеш-коды есептеледі, ол арқылы қажетті бакет табылады, содан кейін осы бакет ішіндегі кілттерді салыстыру үшін equals шақырылады. Егер equals әдісі дұрыс жүзеге асырылмаса немесе қайта анықталмаса, HashMap әртүрлі объектілерді бірдей деп санай немесе керісінше, бұл іздеу немесе кілттердің қайталануында қателерге әкелуі мүмкін.

Мысал:

class Person {
    String name;
    int id;

    @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);
    }
}

// Егер equals және hashCode үйлесімді болса, HashMap кілттерді id бойынша дұрыс анықтайды.