Czym jest HashSet?
HashSet to wbudowany typ danych języka Java, o którym nieformalnym językiem można powiedzieć "HashSet to nieuporządkowana kolekcja unikalnych elementów". Spójrz na prosty przykład:
Rys. 1: Ilustracja pokazująca przykłady prawidłowych i nieprawidłowych HashSet
- Tworzy kolekcję (kolekcja oznacza pojedynczą jednostkę obiektów np.: ArrayList, LinkedList, Vector itp.), która wykorzystuje tablicę mieszającą do przechowywania.
- HashSet nie obsługuje zduplikowanych wartości.
- HashSet może zawierać wartość "null".
- Kolejność wstawiania wartości nie jest przechowywana. Więc jeśli chcesz wstawić elementy w określonej kolejności, HashSet będzie złym wyborem.
- Jeżeli chcesz pobrać/odczytać element w stałym czasie (O(1)), to HashSet jest jednym z najlepszych wyborów.
Co to jest metoda HashSet.contains()?
HashSet.contains() to metoda logiczna, sprawdzająca czy element jest obecny w danej instancji HashSet. Mówiąc najprościej, czy zestaw zawiera żądany element. Java.util.HashSet zapewnia wydajną implementację dla takich zadań. Pozwól, że pokażemy Ci, jak skutecznie używać jej do realizacji zapytań.contains() z wartościami typu Integer
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args) {
// Zadeklaruj swój hash set
HashSet digits = new HashSet();
digits.add(0);
digits.add(1);
digits.add(2);
digits.add(3);
digits.add(4);
digits.add(5);
digits.add(null);
System.out.println("Wszystkie elementy hashset:\t" + digits);
// Spróbuj dodać duplikaty
digits.add(5);
digits.add(2);
System.out.println("Po dodaniu duplikatów: \t" + digits);
System.out.println("\n-------Użycie metody contains-------");
// Sprawdź, czy w hashset występują następujące cyfry
System.out.println("digits.contains(0) : " + digits.contains(0));
System.out.println("digits.contains(2) : " + digits.contains(2));
System.out.println("digits.contains(3) : " + digits.contains(7));
System.out.println("digits.contains(null) : " + digits.contains(null));
}
}
Wynik
Wszystkie elementy hashset: [0, null, 1, 2, 3, 4, 5]
Po dodaniu duplikatów: [0, null, 1, 2, 3, 4, 5]
-------Użycie metody contains-------
digits.contains(0) : true
digits.contains(2) : true
digits.contains(3) : false
digits.contains(null) : true
contains() z wartościami typu String
Spójrz na inny przykład użycia metody contains() z elementami typu String.
import java.util.HashSet;
public class HashSetDemo {
public static void main(String[] args) {
// Przetestuj inny hash set z wartościami typu String
HashSet rainbow = new HashSet();
// Dodawanie elementów do HashSet za pomocą add()
rainbow.add("Czerwony");
rainbow.add("Pomarańczowy");
rainbow.add("Żółty");
rainbow.add("Zielony");
rainbow.add("Niebieski");
rainbow.add("Indygo");
rainbow.add("Fioletowy");
// Przejdźmy przez hashset
System.out.println("Przechodzenie po tęczy:");
for (String i : rainbow){
System.out.println(i);
}
// Sprawdź czy rainbow zawiera wybrane kolory
System.out.println("\n-------Użycie metody contains-------");
System.out.println("rainbow.contains(\"Żółty\"): \t" + rainbow.contains("Żółty"));
System.out.println("rainbow.contains(\"Biały\"): \t" + rainbow.contains("Biały"));
System.out.println("rainbow.contains(\"Lawendowy\"): \t" + rainbow.contains("Lawendowy"));
System.out.println("rainbow.contains(\"Czerwony\"): \t" + rainbow.contains("Czerwony"));
// Usuń kolor z rainbow przy pomocy remove()
rainbow.remove("Czerwony");
// Teraz ponownie użyj metody contains() aby sprawdzić występowanie koloru
System.out.println("rainbow.contains(\"Czerwony\"): \t" + rainbow.contains("Czerwony"));
System.out.println("\nPo usunięciu czerwonego: " + rainbow);
}
}
Wynik
Przechodzenie po tęczy:
Czerwony
Fioletowy
Żółty
Niebieski
Indygo
Pomarańczowy
Zielony
-------Użycie metody contains-------
rainbow.contains("Żółty"): true
rainbow.contains("Biały"): false
rainbow.contains("Lawendowy"): false
rainbow.contains("Czerwony"): true
rainbow.contains("Czerwony"): false
Po usunięciu czerwonego: [Fioletowy, Żółty, Niebieski, Indygo, Pomarańczowy, Zielony]
Jak widać kolejność wyświetlania elementów różni się od kolejności dodawania elementów do Hashset.

GO TO FULL VERSION