Was ist ein HashSet?

HashSet ist ein eingebauter Datentyp in Java, und vereinfacht ausgedrückt könnte man sagen „Ein HashSet ist eine ungeordnete Sammlung einmaliger Elemente.“ Sieh dir ein einfaches Beispiel an: HashSet contains()-Methode in Java - 1

Abb. 1: Eine Abbildung mit gültigen und ungültigen Beispielen für ein HashSet

(Bevor du weitermachst: Wir gehen davon aus, dass du die Begriffe Hashing und Hashtabellen kennst) HashSet erweitert (engl. „extends“; extends bedeutet, dass eine Klasse von einer anderen Klasse erbt) AbstractSet und implementiert das Set-Interface. Hier ein paar Punkte, die du beachten musst, bevor du mit HashSets arbeitest:
  • Es erstellt eine Collection (Collection bedeutet eine einzelne Einheit von Objekten, z. B.: ArrayList, LinkedList, Vector usw.), die eine Hashtabelle zur Speicherung verwendet.
  • Doppelte Werte sind in einem HashSet nicht erlaubt.
  • Du kannst „null“-Werte in ein HashSet einfügen.
  • Es wird keine bestimmte Einfügereihenfolge berücksichtigt. Wenn du also Elemente der Reihe nach einfügen willst, ist ein HashSet für deine Anforderungen eine schlechte Wahl.
  • Wenn du ein Element in konstanter Zeit (O(1)) abrufen willst, ist ein HashSet einer der besten Ansätze, die du wählen kannst.

Was ist die Methode HashSet.contains()?

HashSet.contains() ist eine boolesche Methode, die prüft, ob ein Element in einer Instanz von HashSet vorhanden ist oder nicht. Einfach gesagt, ob die Menge das gewünschte Element enthält. Java.util.HashSet bietet eine effiziente Implementierung dafür. Wir zeigen dir, wie du sie effektiv nutzen kannst, um deine Fragen zu klären.

contains() mit Integer-Werten

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));
   }
}
Ausgabe
Alle Elemente im HashSet: [0, null, 1, 2, 3, 4, 5] Nach Hinzufügen von Duplikaten: [0, null, 1, 2, 3, 4, 5] -------contains-Methode verwenden------- digits.contains(0) : true digits.contains(2) : true digits.contains(3) : false digits.contains(null) : true

contains() mit Strings

Sieh dir ein weiteres Beispiel für die Methode contains() mit Strings an.

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);         
	}
}
Ausgabe
Regenbogen durchlaufen: Rot Violett Gelb Blau Indigo Orange Grün -------contains-Methode verwenden------- rainbow.contains("Gelb"): true rainbow.contains("Weiß"): false rainbow.contains("Lavendel"): false rainbow.contains("Rot"): true rainbow.contains("Rot"): false Nach dem Entfernen von Rot: [Violett, Gelb, Blau, Indigo, Orange, Grün]
Wie du siehst, unterscheidet sich die Reihenfolge der Ausgabe von der Reihenfolge, in der die Elemente in das HashSet eingetragen werden. HashSet contains()-Methode in Java - 2

Fazit

Die Methode contains() für HashSets ist ziemlich einfach zu benutzen. Bei Unklarheiten kannst du aber immer zu diesem Artikel zurückkehren. Viel Spaß beim Programmieren! :)