hashset java tutorial with programming examples
In diesem Tutorial wird anhand von Programmierbeispielen erläutert, was HashSet in Java ist, welche HashSet-Methoden verwendet werden, wie es implementiert wird und wie es und andere verwandte Konzepte durchlaufen werden:
Ein HashSet ist eine Sammlung, in der Objekte gespeichert werden. Das HashSet in Java wird mithilfe der HashSet-Klasse des Pakets java.util implementiert.
Diese Klasse implementiert eine festgelegte Schnittstelle. Es verwendet HashTable, eine HashMap-Instanz für die Speicherung.
=> Schauen Sie sich hier den Java Beginners Guide an.
Was du lernen wirst:
- Java HashSet
- HashSet gegen HashMap
- HashSet gegen TreeSet
- Fazit
Java HashSet
Einige der Eigenschaften von HashSet sind nachstehend aufgeführt:
- Implementiert eine Set-Schnittstelle mit HashTable als interner Struktur. HashTable ist wiederum eine HashMap-Instanz.
- Die Reihenfolge der Elemente bleibt nicht erhalten. Elemente werden in zufälliger Reihenfolge gespeichert.
- HashSet erlaubt keine doppelten Werte.
- Implementiert eine klonbare und serialisierbare Schnittstelle neben der Set-Schnittstelle.
- Wir können Nullwerte in HashSet haben.
HashSet-Klassenhierarchie
Die Hierarchie der HashSet-Klasse ist unten angegeben:
Wie in der obigen Abbildung gezeigt, erweitert die HashSet-Klasse die AbstractSet-Klasse, die wiederum die Set-Schnittstelle implementiert. Die Set-Schnittstelle erbt die Collection-Schnittstelle, die wiederum die Iterable-Schnittstelle erweitert.
In Java 8 wurde eine neue Methode eingeführt 'Spliterator' in HashSet, das einen ausfallsicheren Spliterator erstellt, der eine späte Bindung über die Elemente des HashSet ausführt.
Die allgemeine Deklaration der HashSet-Klasse lautet:
öffentliche Klasse HashSet erweitert AbstractSet implementiert Set,
Klonbar, serialisierbar
Importieren Sie HashSet
Wir können die HashSet-Funktionalität mithilfe der unten gezeigten import-Anweisung in das Programm aufnehmen:
import java.util.HashSet;
oder
import java.util. *;
Deklarieren Sie HashSet in Java
Wir können ein HashSet-Objekt in Java wie folgt erstellen:
HashSet h = neues HashSet ();
Die HashSet-Klasse bietet die folgenden Konstruktoren zum Erstellen von Objekten.
Konstruktorprototyp | Beschreibung | |
---|---|---|
entfernen | Boolesches Entfernen (Objekt o) | Entfernt das angegebene Element o aus dem HashSet, wenn es Teil des HashSet ist. |
HashSet () | Standardkonstruktor für HashSet | |
HashSet (int Kapazität) | Erstellt ein HashSet-Objekt mit der angegebenen Kapazität. | |
HashSet (int Kapazität, float loadFactor) | Erstellt ein HashSet-Objekt mit der angegebenen Kapazität und dem angegebenen loadFactor. | |
HashSet (Sammlung c) | Erstellen Sie ein HashSet-Objekt aus der angegebenen Sammlung. |
Wie in der obigen Tabelle gezeigt, stellt diese Klasse neben dem Standardkonstruktor auch die Konstruktoren bereit, deren Argumente Kapazität und Ladefaktor sowie eine andere Sammlung sind. Wir können die Objekte dieser Klasse mit jedem dieser Konstruktoren erstellen.
Initialisieren Sie HashSet
Der folgende Java-Code zeigt die Deklaration und Initialisierung des HashSet-Klassenobjekts. In diesem Programm erstellen wir ein HashSet-Klassenobjekt aus einer ArrayList. Zunächst erstellen und initialisieren wir ArrayList und verwenden diese ArrayList dann, um ein HashSet-Objekt zu erstellen und zu initialisieren.
import java.util.*; class Main{ public static void main(String args()){ //declare and initialize ArrayList ArrayList<String> myList=new ArrayList<String>(); myList.add('Red'); myList.add('Green'); myList.add('Blue'); //Create a HashSet and provide ArrayList in its constructor HashSet<String> mySet=new HashSet(myList); mySet.add('Yellow'); //print the HashSet System.out.println('The HashSet contents:'); Iterator<String> i=mySet.iterator(); while(i.hasNext()) { System.out.print(i.next() + ' '); } } }
Ausgabe:
Wie funktioniert HashSet intern in Java?
Intern wird es mithilfe einer HashTable implementiert. HashTable ist eine Instanz von HashMap. HashMap ist jedoch eine Sammlung von Schlüssel-Wert-Paaren. Wie speichern wir HashSet in einer HashMap?
Die Objektwerte von HashSet sind die Schlüssel zur HashMap.
Java HashSet Beispiel
Sehen wir uns ein detailliertes Beispiel für HashSet in Java an.
import java.util.*; class Main{ public static void main(String args()){ //Create a HashSet and add elements to it HashSet<String> mySet=new HashSet<String>(); mySet.add('Blue'); mySet.add('Green'); mySet.add('Blue'); mySet.add('Green'); mySet.add('Red'); mySet.add('Brown'); mySet.add('Yellow'); //Iterate through the HashSet and print its elements System.out.println('HashSet contents:'); Iterator<String> itr=mySet.iterator(); while(itr.hasNext()){ System.out.print(itr.next() + ' '); } } }
Ausgabe:
Hier verwenden wir den Standardkonstruktor, um ein HashSet-Objekt zu erstellen. Dann fügen wir mit der Methode add dem HashSet Elemente (Farben) hinzu. Als nächstes verwenden wir einen Iterator, um das HashSet zu durchlaufen und den Inhalt zu drucken.
HashSet Iterator
In Java kann HashSet auf zwei Arten durchlaufen oder iteriert werden, wie unten erläutert.
Ohne Iterator zu verwenden
Hier definieren wir keinen Iterator im HashSet. Stattdessen verwenden wir eine forEach-Schleife. Das folgende Programm zeigt das Durchlaufen von HashSet mithilfe einer forEach-Schleife.
import java.util.HashSet; import java.util.Set; class Main{ public static void main(String() args) { // Create a HashSet Set<String> cities_HashSet = new HashSet<String>(); //Initialize HashSet with elements cities_HashSet.add('Mumbai'); cities_HashSet.add('Delhi'); cities_HashSet.add('Pune'); cities_HashSet.add('Chennai'); cities_HashSet.add('Bangaluru'); //use foreach loop to iterate through the HashSet System.out.println('HashSet contents:'); for (String city : cities_HashSet) { System.out.print(city + ' '); } } }
Ausgabe:
Iterator verwenden
Der nächste Ansatz der Iteration ist die Verwendung eines Iterators. Hier definieren wir einen Iterator für die HashSet-Klasse und durchlaufen ihn dann.
Das folgende Programm zeigt diesen Ansatz.
import java.util.HashSet; import java.util.Set; import java.util.Iterator; class Main{ public static void main(String() args) { // Create a HashSet Set<String> cities_HashSet = new HashSet<String>(); //Initialize HashSet with elements cities_HashSet.add('Mumbai'); cities_HashSet.add('Delhi'); cities_HashSet.add('Pune'); cities_HashSet.add('Chennai'); cities_HashSet.add('Bangaluru'); //use iterator to iterate through the HashSet System.out.println('HashSet contents using Iterator:'); Iterator<String> iter = cities_HashSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
Ausgabe:
HashSet-Methoden / API
Die folgende Tabelle zeigt die von der HashSet-Klasse bereitgestellten Methoden. Wir haben den Prototyp und die Beschreibung für jede Methode bereitgestellt. Wie zu sehen ist, haben wir Methoden für grundlegende Operationen wie Hinzufügen, Entfernen, Größe usw. sowie für andere Methoden zum Überprüfen auf Inhalt, Leere, Iterator, Spliterator usw.
Methode | Methodenprototyp | Beschreibung |
---|---|---|
hinzufügen | Boolesches Addieren (E e) | Fügt dem HashSet das angegebene Element e hinzu, falls es noch nicht vorhanden ist. |
klar | Leere löschen () | Löscht oder entfernt alle Elemente aus dem HashSet |
Klon | Objektklon () | Es wird verwendet, um eine flache Kopie dieser HashSet-Instanz zurückzugeben: Die Elemente selbst werden nicht geklont. |
enthält | Boolescher Wert enthält (Objekt o) | Überprüft, ob das HashSet das angegebene Objekt o enthält, und gibt true zurück, wenn ja. |
ist leer | Boolean isEmpty () | Überprüft, ob das HashSet leer ist. Gibt true zurück, wenn ja. |
Iterator | Iterator iterator () | Gibt einen Iterator zurück, der zum Durchlaufen des HashSet verwendet wird. |
Größe | Int size () | Gibt die Größe oder Anzahl der im HashSet vorhandenen Elemente zurück. |
Splitter | Spliterator Spliterator () | Gibt einen ausfallsicheren und spät bindenden Spliterator zurück, um das HashSet zu durchlaufen. Diese Methode wurde in Java 8 eingeführt. |
Wir haben die von der HashSet-Klasse bereitgestellten Methoden beschrieben. Lassen Sie uns nun ein Beispiel implementieren, das die wichtigsten Methoden der Klasse demonstriert.
Das folgende Java-Programm demonstriert die Methoden dieser Klasse.
import java.util.*; class Main{ public static void main(String args()){ //create a HashSet and initialize it HashSet<String> colors_set=new HashSet<String>(); colors_set.add('Red'); colors_set.add('Green'); colors_set.add('Blue'); colors_set.add('Cyan'); System.out.println('Initial HashSet: '+colors_set); //remove() method => remove specified element colors_set.remove('Red'); System.out.println('
HashSet after remove(Red): '+colors_set); //declare and initialize another list HashSet<String> colors_hash=new HashSet<String>(); colors_hash.add('Yellow'); colors_hash.add('Magenta'); //addAll() method => add another HashSet to existing colors_set.addAll(colors_hash); System.out.println('
HashSet after add(colors_hash): '+colors_set); //removeAll() method => remove all elements specified in the argument colors_set.removeAll(colors_hash); System.out.println('
HashSet after removeAll(colors_hash) method: '+colors_set); //removeIf() => remove if given condition is fulfilled colors_set.removeIf(str->str.contains('Green')); System.out.println('
HashSet after removeIf(contains(Green)) method: '+colors_set); //clear() => delete all elements from the HashSet colors_set.clear(); System.out.println('
HashSet after clear() method: '+colors_set); } }
Ausgabe:
Konvertieren Sie HashSet in Array
Wir können die toArray () -Methode von HashSet verwenden, um das angegebene HashSet in ein Array zu konvertieren. Beachten Sie, dass der Datentyp und die Größe des Arrays mit denen von HashSet übereinstimmen sollten.
Das folgende Java-Programm zeigt diese Konvertierung.
import java.util.HashSet; class Main{ public static void main(String() args) { // Create a HashSet & inintialize it HashSet<String> num_HashSet = new HashSet<String>(); num_HashSet.add('One'); num_HashSet.add('Two'); num_HashSet.add('Three'); num_HashSet.add('Four'); // Print HashSet contents System.out.println('HashSet contents: '+ num_HashSet); // Declare an array with size = HashSet size String() numArray = new String(num_HashSet.size()); //use toArray method to convert HashSet to an array num_HashSet.toArray(numArray); // Print Array System.out.println('Array from HashSet: '); for(String val : numArray){ System.out.print(val + ' '); } } }
Ausgabe:
Sortieren Sie ein HashSet
Wir können ein HashSet in Java sortieren. HashSet-Elemente werden ursprünglich nicht sortiert, da die Reihenfolge der Elemente nicht beibehalten wird. Wir können zwei Ansätze verfolgen, um ein HashSet in Java zu sortieren.
Verwenden der Collections.sort () -Methode
Bei diesem Ansatz konvertieren wir das HashSet in eine Liste. Dann verwenden wir die Collections.sort () -Methode, um die Liste zu sortieren. Diese Liste wird dann gedruckt.
import java.util.*; public class Main { public static void main(String args()) { // Create a HashSet & initialize it HashSet<String> cities_HashSet = new HashSet<String>(); cities_HashSet.add('Pune'); cities_HashSet.add('Mumbai'); cities_HashSet.add('Bangaluru'); cities_HashSet.add('Hyderabad'); System.out.println('Original HashSet: ' + cities_HashSet); // Convert HashSet to ArrayList List<String> cities_list = new ArrayList<String>(cities_HashSet); // Use Collections.sort () method to sort the list Collections.sort(cities_list); // Print the Sorted ArrayList (HashSet) System.out.println('Sorted HashSet:'+ cities_list); } }
Ausgabe:
qa Fragen und Antworten zum Hauptinterview pdf
Durch Konvertieren von HashSet in TreeSet
Mit diesem Ansatz konvertieren wir das HashSet in TreeSet. TreeSet behält die Reihenfolge der Elemente bei. Wenn das HashSet in TreeSet umgewandelt wird, werden die Elemente daher in die richtige Reihenfolge gebracht.
Das folgende Java-Programm zeigt diese Konvertierung, wodurch das HashSet sortiert wird.
import java.util.*; public class Main { public static void main(String args()) { // Create and initialize a HashSet HashSet<String> cities_HashSet = new HashSet<String>(); cities_HashSet.add('Pune'); cities_HashSet.add('Mumbai'); cities_HashSet.add('Bangaluru'); cities_HashSet.add('Hyderabad'); System.out.println('Original HashSet:'+ cities_HashSet); // Sort HashSet using TreeSet TreeSet<String> treeSet = new TreeSet<String>(cities_HashSet); // Print the sorted HashSet System.out.println('HashSet sorted using using TreeSet:' + treeSet); } }
Ausgabe:
Lassen Sie uns nun einige der Unterschiede zwischen HashSet und HashMap diskutieren. Wir werden auch die Unterschiede zwischen HashSet und TreeSet diskutieren.
HashSet gegen HashMap
Die folgende Tabelle zeigt die Hauptunterschiede zwischen HashSet und HashMap.
HashSet | HashMap |
---|---|
Objekte werden mit der Methode Add () hinzugefügt. | HashMap verwendet die put () -Methode, um Schlüssel-Wert-Paare hinzuzufügen. |
Implementiert Set-Schnittstelle. | Implementiert die Kartenschnittstelle. |
Speichert Objekte eines bestimmten Typs. | Speichern Sie Schlüssel-Wert-Datenpaare. |
Ermöglicht keine doppelten Werte von Objekten. | Ermöglicht doppelte Werte, jedoch keine doppelten Schlüssel. |
Kann einen einzelnen Nullwert haben. | Ermöglicht einen einzelnen Nullschlüssel und mehrere Nullwerte. |
Verwendet intern HashMap Object zum Speichern von Daten. | Verwendet die Hashing-Technik zum Speichern von Daten. |
Ist im Vergleich zu HashMap langsamer. | HashMap ist schneller. |
HashSet gegen TreeSet
Nachfolgend sind die Unterschiede zwischen HashSet und TreeSet aufgeführt.
HashSet | TreeSet |
---|---|
Hat eingeschränkte Funktionalität. | Bietet möglicherweise Funktionen, die verschiedene Vorgänge bieten, und erleichtert die Verwendung von Treeset als HashSet. |
Die Elementreihenfolge wird nicht beibehalten. Speichert Objekte in zufälliger Reihenfolge. | Behält die natürliche Ordnung der Elemente bei. |
Es erlaubt Nullwerte. | Es kann keine Nullwerte haben. |
Bietet eine bessere Leistung, da die Grundoperationen konstant lange dauern. | Bietet log n Zeitkosten für grundlegende Operationen. |
Viel schneller als Treeset. | Baumsatz ist langsamer. |
Intern mit HashMap implementiert. | Treeset wird intern mithilfe der navigierbaren Treemap implementiert. |
Verwendet zum Vergleich die Methode equals (). | Verwendet zum Vergleich die Methode compareTo (). |
Häufig gestellte Fragen
F # 1) Wie funktioniert HashSet in Java?
Antworten: HashSet in Java verwendet HashMap zum Speichern des Objekts. Ein HashMap-Objekt wird erstellt, wenn ein HashSet-Objekt erstellt wird. Die im HashSet eingegebenen Elemente oder Objekte werden als Schlüssel in der HashMap gespeichert.
F # 2) Ist HashSet in Java bestellt?
Antworten: Nein, es ist nicht in Java bestellt. Es speichert Elemente in zufälliger Reihenfolge.
F # 3) Erlaubt HashSet null?
Antworten: Ja, es erlaubt einen einzelnen Nullwert. Dies bedeutet, dass nur ein einzelnes Element oder Objekt null und nicht alle sein kann.
F # 4) Warum wird HashSet in Java verwendet?
Antworten: Es wird verwendet, um Schlüssel-Wert-Paare in Java zu speichern. Es ähnelt HashTable mit der Ausnahme, dass HashSet nicht synchronisiert ist und im Gegensatz zu HashTable Nullwerte und einen einzelnen Nullschlüssel zulässt. HashSet ist nicht bestellt und kann zum Speichern ungeordneter Objekte verwendet werden oder wenn die Reihenfolge der Objekte nicht erforderlich ist.
F # 5) Ist HashSet in Java synchronisiert?
Antworten: Das HashSet ist in Java nicht synchronisiert. Es ist auch nicht threadsicher. Wir können es jedoch mit der synchronizedSet () -Methode synchronisieren.
Fazit
HashSet ist eine Sammlung, die Objekte in zufälliger Reihenfolge enthält. Die HashSet-Klasse, die HashSet in Java intern implementiert, verwendet HashTable, das HashMap implementiert.
Wir haben die Deklaration und Initialisierung von HashSet zusammen mit den von der HashSet-Klasse bereitgestellten Methoden gesehen.
=> Lesen Sie die Easy Java Training Series durch.
Literatur-Empfehlungen
- Java Double - Tutorial mit Programmierbeispielen
- Java Float Tutorial mit Programmierbeispielen
- Java Reverse String: Tutorial mit Programmierbeispielen
- TreeSet In Java: Tutorial mit Programmierbeispielen
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- Java String enthält () Method Tutorial mit Beispielen
- TreeMap in Java - Tutorial mit Java TreeMap-Beispielen
- Jagged Array In Java - Tutorial mit Beispielen