Blog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2025 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Java
Javahard

Dlaczego `equals()` i `hashCode()` muszą spełniać kontrakt?

Tagi
#equals#hashcode#hashmap
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Jeśli dwa obiekty są równe wg `equals()`, muszą mieć ten sam `hashCode()`. Kolekcje haszujące (HashMap/HashSet) na tym polegają; złamanie kontraktu powoduje „znikające” wpisy i trudne bugi.

final class User {
  private final String email;

  User(String email) {
    this.email = email;
  }

  @Override public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof User)) return false;
    return email.equals(((User) o).email);
  }

  @Override public int hashCode() {
    return email.hashCode();
  }
}

Powiązane pytania

Java
HashMap vs ConcurrentHashMap: kiedy używać którego?
#java#collections#concurrency
Java
HashMap vs LinkedHashMap — jaka jest praktyczna różnica?
#hashmap#linkedhashmap#collections
Java
HashMap vs ConcurrentHashMap — jaka jest praktyczna różnica?
#hashmap#concurrency#concurrenthashmap
Java
W Javie, czym różni się `==` od `.equals()`?
#equals#reference#string
Struktury danych
Ordered map (TreeMap) vs HashMap: kiedy wybrać mapę uporządkowaną?
#map#treemap#hashmap