Centrum wiedzy o technologiach i pracy w IT
equals java

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.

Nie udało się zapisać Twojej subskrypcji. Spróbuj ponownie.
Udało się! Widzimy się niebawem – newsletter wysyłamy w każdy wtorek

Otrzymuj za darmo unikalne poradniki, dane i wiedzę o pracy w IT – dostarczane co tydzień

Klikając “Zapisz mnie” wyrażasz zgodę na otrzymywanie e-maili od redakcji, a także ofert partnerów oraz akceptujesz naszą Politykę prywatnoś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:

Java lambda – zrozum wyrażenie i wykorzystaj w praktyce

Java final – zastosowania i przykłady

Total
0
Shares
_podobne artykuły