Autor
John Selawsky
Senior Java Developer and Tutor at LearningTree

Metoda HashSet contains() w Javie

Opublikowano w grupie Poland

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: Metoda HashSet contains() w Javie - 1

Rys. 1: Ilustracja pokazująca przykłady prawidłowych i nieprawidłowych HashSet

(Zanim przejdziesz dalej, oczekujemy, że zapoznasz się z terminami haszowanie i tablica mieszająca / tablica z haszowaniem.) HashSet rozszerza (rozszerza oznacza, że klasa dziedziczy z innej klasy) AbstractSet i implementuje interfejs Set. Oto kilka punktów, które należy wziąć pod uwagę przed rozpoczęciem pracy z 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. Metoda HashSet contains() w Javie - 2

Wnioski

Metoda contains() dla HashSet jest dość prosta w użyciu. Jednak w przypadku jakichkolwiek wątpliwości zawsze możesz odnieść się do tego postu. Udanego kodowania! :)
Komentarze (1)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
hipokratestl Poziom 19, Poland
7 lutego 2023
Hi, mistake at example with integer. Number 3 is in the set and "digits.contains(3) : true" should be instead of "digits.contains(3) : false".