Jakie klasy kolekcji Java implementują interfejs Set?

Interfejs Set w Javie reprezentuje kolekcję, która nie zawiera zduplikowanych elementów. Jest to jedna z fundamentalnych struktur danych używanych w programowaniu, zwłaszcza tam, gdzie ważne jest unikanie powtórzeń i szybki dostęp do elementów. W ramach ekosystemu Java Collection Framework, interfejs Set ma kilka konkretnych implementacji, każda z nich z innymi właściwościami i zastosowaniami.

Implementacje interfejsu Set

  1. HashSet – najczęściej używana implementacja, która wykorzystuje hash table do przechowywania elementów. Jest to implementacja zapewniająca bardzo szybkie operacje dodawania, usuwania oraz sprawdzania obecności elementu, jednak nie gwarantuje żadnej kolejności elementów.
  2. LinkedHashSet – podobnie jak HashSet, jednak dodatkowo zachowuje kolejność dodawania elementów. Jest to korzystne, gdy potrzebna jest zarówno unikalność elementów, jak i ich określona kolejność.
  3. TreeSet – implementacja bazująca na czerwono-czarnym drzewie. Oprócz zapewnienia unikalności elementów, gwarantuje ich posortowanie według naturalnego porządku lub porządku określonego przez komparator.

Przykład kodu z wykorzystaniem HashSet

W poniższym przykładzie zostanie zaprezentowane, jak można używać HashSet do przechowywania unikalnych elementów i jakie operacje są dostępne z tą kolekcją. Przykład będzie zawierał komentarze w języku polskim, wyjaśniające działanie poszczególnych linii kodu.

import java.util.HashSet; // Import klasy HashSet

public class SetExample {
    public static void main(String[] args) {
        // Utworzenie instancji HashSet
        HashSet<String> cities = new HashSet<>();

        // Dodanie elementów do zbioru
        cities.add("Warszawa"); // Dodaje Warszawę
        cities.add("Kraków");   // Dodaje Kraków
        cities.add("Gdańsk");   // Dodaje Gdańsk
        cities.add("Warszawa"); // Ponowne dodanie Warszawy (ignorowane)

        // Wyświetlenie wszystkich miast w zbiorze
        for (String city : cities) {
            System.out.println(city); // Wyświetla miasta
        }

        // Sprawdzenie, czy element jest w zbiorze
        if (cities.contains("Kraków")) {
            System.out.println("Kraków jest w zbiorze.");
        } else {
            System.out.println("Kraków nie jest w zbiorze.");
        }
    }
}

Podsumowanie

Jak widać, Set w Javie jest interfejsem pozwalającym na przechowywanie niepowtarzalnych elementów w różnych formach, co jest przydatne w wielu zastosowaniach programistycznych. W zależności od potrzeb, możemy wybrać między HashSet, LinkedHashSet a TreeSet, kierując się kryteriami takimi jak kolejność elementów czy efektywność operacji. Wybór odpowiedniej implementacji zależy od specyfiki problemu, który chcemy rozwiązać.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top