CodeGym /Blog Java /Poland /Metoda HashSet contains() w Javie
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;

import java.util.HashSet;

public class HashSetDemo {
   public static void main(String[] args) {

       // Declare your 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("All elements in hashset:\t" + digits);

       // Try adding duplicates
       digits.add(5);
       digits.add(2);
       System.out.println("After adding duplicates: \t" + digits);

       System.out.println("\n-------Using Contains Method-------");
       // Check out if the following digits exist in the hashset
       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) {

	  // Try working with another hash set of String type
	  HashSet rainbow = new HashSet(); 
		  
        // Adding elements into HashSet using add() 
        rainbow.add("Red"); 
        rainbow.add("Orange"); 
        rainbow.add("Yellow"); 
        rainbow.add("Green"); 
        rainbow.add("Blue"); 
        rainbow.add("Indigo"); 
        rainbow.add("Violet"); 
        
  
        // Let's traverse the hashset
        System.out.println("Traversing the rainbow:"); 
        for (String i : rainbow){
             System.out.println(i); 
        }
       // Check out if rainbow contains this color or not
    	 System.out.println("\n-------Using Contains Method-------");

        System.out.println("rainbow.contains(\"Yellow\"): \t" + rainbow.contains("Yellow")); 
        System.out.println("rainbow.contains(\"White\"): \t"  + rainbow.contains("White")); 
        System.out.println("rainbow.contains(\"Lavender\"): \t"  + rainbow.contains("Lavender")); 
        System.out.println("rainbow.contains(\"Red\"): \t"  + rainbow.contains("Red")); 
  
        // Remove a color from rainbow using remove() 
        rainbow.remove("Red"); 
    
        // Now consume  set contains() method again to check if it's still present
        System.out.println("rainbow.contains(\"Red\"): \t"  + rainbow.contains("Red")); 

        System.out.println("\nAfter removing Red: " + 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 24, 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".