Metoda equals w języku Java. Porównywanie obiektów
Ostatnia aktualizacja 4 kwietnia, 2024
Java posiada mechanizmy do porównywania obiektów, które są niezbędne w wielu aspektach programowania. Przydają się od tworzenia kolekcji po pracę nad logiką biznesową. Mechanizm Equals Java pozwala na dokładne porównanie obiektów, sprawdzając ich równość na poziomie wartości.
equals Java – podstawy porównywania obiektów
Każda klasa dziedziczy w Javie metodę equals z klasy Object. Domyślna implementacja tej metody porównuje referencje, co oznacza, że dwa różne obiekty są uznawane za różne, nawet jeśli ich zawartość jest identyczna.
String text1 = new String("java");
String text2 = new String("java");
System.out.println(text1.equals(text2)); // Wynik: true
W tym przykładzie, mimo że text1 i text2 są różnymi obiektami, metoda equals zwraca true, ponieważ String w Javie przesłania metodę equals, porównując wartości znaków zamiast referencji.
equals Java – porównywanie własnych klas
Jeśli chcemy, aby nasze własne klasy mogły być porównywane pod kątem równości ich zawartości, musimy przesłonić metodę equals.
public class Book {
private String title;
private String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Book book = (Book) obj;
return title.equals(book.title) && author.equals(book.author);
}
}
W tym fragmencie kodu metoda equals jest przesłaniana, aby sprawdzić, czy dwa obiekty Book mają taki sam tytuł i autora. Dzięki temu, nawet jeśli są to różne instancje, mogą być uznane za “równe”, jeśli ich zawartość jest taka sama.
Java equals i hashCode
Ważne jest również, aby pamiętać o przesłonięciu metody hashCode wraz z equals. W tym wypadku obiekty uznane za równe przez equals będą miały tę samą wartość hashCode. Jest to istotne dla niektórych kolekcji w Javie, takich jak HashSet czy HashMap.
@Override
public int hashCode() {
return Objects.hash(title, author);
}
W tym kodzie używamy klasy pomocniczej Objects
i jej metody hash
, aby wygenerować hashCode
na podstawie tytułu i autora książki.
Dalsza część tekstu znajduje się pod materiałem wideo:
Praktyczne użycie equals Java
Wykorzystanie equals w praktycznych aplikacjach Javy cechuje się wszechstronnością. Możemy użyć tej metody, aby dokładnie porównać obiekty w kolekcjach, zarządzać unikalnością elementów w zestawach czy sprawdzać zgodność obiektów z oczekiwanymi wartościami w testach jednostkowych.
Zrozumienie i właściwe stosowanie metody equals w Javie jest kluczowe dla tworzenia efektywnego i niezawodnego oprogramowania. Daje to programistom kontrolę nad tym, jak obiekty są porównywane, umożliwiając precyzyjne i intuicyjne zarządzanie równością obiektów w aplikacji.
Dziękujemy, że przeczytałaś/eś nasz artykuł. Obserwuj EnterTheCode.pl w Wiadomościach Google, aby być na bieżąco.
Czytaj także: