hashset java tutorial with programming examples
Deze tutorial legt uit wat HashSet in Java is, HashSet-methoden, hoe je het implementeert en erdoorheen herhaalt en andere gerelateerde concepten met behulp van programmeervoorbeelden:
Een HashSet is een verzameling waarin objecten worden opgeslagen. De HashSet in Java wordt geïmplementeerd met behulp van de ‘HashSet’ -klasse van het java.util-pakket.
Deze klasse implementeert een vaste interface. Het gebruikt HashTable, een HashMap-instantie voor opslag.
Bekijk hier de Java-beginnershandleiding.
Wat je leert:
- Java HashSet
- HashSet versus HashMap
- HashSet versus TreeSet
- Gevolgtrekking
Java HashSet
Enkele kenmerken van HashSet worden hieronder gegeven:
- Implementeert een Set-interface met HashTable als interne structuur. HashTable is op zijn beurt een HashMap-instantie.
- Het behoudt de volgorde van de elementen niet. Elementen worden in willekeurige volgorde opgeslagen.
- HashSet staat geen dubbele waarden toe.
- Implementeert een Cloneable en Serializable interface naast de Set-interface.
- We kunnen null-waarden hebben in HashSet.
HashSet-klassenhiërarchie
De hiërarchie van de HashSet-klasse wordt hieronder weergegeven:
Zoals te zien is in de bovenstaande afbeelding, breidt de klasse HashSet de klasse AbstractSet uit die op zijn beurt de Set-interface implementeert. De set-interface erft de Collection-interface die op zijn beurt de itereerbare interface uitbreidt.
Java 8-release introduceerde een nieuwe methode ‘Spliterator’ in HashSet die een fail-fast spliterator creëert die late binding uitvoert over de elementen van de HashSet.
De algemene verklaring van de HashSet-klasse is:
openbare klasse HashSet breidt AbstractSet implementeert Set uit,
Te klonen, serialiseerbaar
Importeer HashSet
We kunnen de HashSet-functionaliteit in het programma opnemen met behulp van de importverklaring zoals hieronder weergegeven:
importeer java.util.HashSet;
of
importeer java.util. *;
Declareer HashSet in Java
We kunnen een HashSet-object in Java maken zoals hieronder weergegeven:
HashSet h = nieuwe HashSet ();
De klasse HashSet biedt de volgende constructors om objecten te maken.
Constructor-prototype | Omschrijving | |
---|---|---|
verwijderen | Boolean remove (Object o) | Verwijdert het gegeven element o uit de HashSet als het deel uitmaakt van de HashSet. |
HashSet () | Standaardconstructor voor HashSet | |
HashSet (int capaciteit) | Construeert een HashSet-object met de gegeven ‘capaciteit’. | |
HashSet (int capaciteit, float loadFactor) | Construeert een HashSet-object met de gegeven ‘capacity’ en ‘loadFactor’. | |
HashSet (Collectie c) | Construeer een HashSet-object uit een bepaalde verzameling. |
Zoals getoond in de bovenstaande tabel, biedt deze klasse, naast de standaardconstructor, ook de constructors die capaciteit en loadfactor en een andere verzameling als argumenten gebruiken. We kunnen de objecten van deze klasse maken met behulp van een van deze constructors.
Initialiseer HashSet
De volgende Java-code toont de declaratie en initialisatie van het HashSet-klasseobject. In dit programma maken we een HashSet-klasseobject op basis van een ArrayList. In eerste instantie maken en initialiseren we ArrayList en gebruiken we deze ArrayList om een HashSet-object te maken en te initialiseren.
Uitgang:
Hoe werkt HashSet intern in Java?
Intern wordt het geïmplementeerd met behulp van een HashTable. HashTable is een instantie van HashMap. Maar HashMap is een verzameling sleutel-waardeparen. Dus hoe slaan we HashSet op in een HashMap?
De objectwaarden van HashSet zijn de sleutels tot de HashMap.
Java HashSet-voorbeeld
Laten we eens kijken naar een gedetailleerd voorbeeld van HashSet in Java.
Uitgang:
Hier gebruiken we de standaardconstructor om een HashSet-object te maken. Met behulp van de add-methode voegen we elementen (kleuren) toe aan de HashSet. Vervolgens gebruiken we een iterator om door de HashSet te bladeren en de inhoud af te drukken.
HashSet Iterator
In Java kan HashSet op twee manieren worden doorlopen of herhaald, zoals hieronder wordt besproken.
Zonder Iterator te gebruiken
Hier definiëren we geen iterator op de HashSet. In plaats daarvan gebruiken we een forEach-lus. Het volgende programma toont het doorlopen van HashSet met behulp van een forEach-lus.
Uitgang:
Met behulp van Iterator
De volgende benadering van itereren is het gebruik van een iterator. Hier definiëren we een iterator voor de HashSet-klasse en doorlopen deze vervolgens.
Het volgende programma laat deze benadering zien.
Uitgang:
HashSet-methoden / API
De volgende tabel toont de methoden die worden geboden door de klasse HashSet. We hebben voor elke methode het prototype en de beschrijving gegeven. Zoals we hebben gezien, hebben we methoden voor basisbewerkingen zoals toevoegen, verwijderen, grootte, etc. evenals voor andere methoden om te controleren op inhoud, leegte, iterator, spliterator, enz.
Methode | Methode Prototype | Omschrijving |
---|---|---|
toevoegen | Booleaanse add (E e) | Voegt gegeven element e toe aan de HashSet als dit nog niet aanwezig is. |
Doorzichtig | Ongeldig wissen () | Wist of verwijdert alle elementen uit de HashSet |
kloon | Object kloon () | Het wordt gebruikt om een ondiepe kopie van deze HashSet-instantie te retourneren: de elementen zelf worden niet gekloond. |
bevat | Boolean bevat (Object o) | Controleert of de HashSet het opgegeven object o bevat en retourneert true indien ja. |
is leeg | Boolean isEmpty () | Controleert of de HashSet leeg is. Retourneert true indien ja. |
iterator | Iterator iterator () | Retourneert een iterator die wordt gebruikt om de HashSet te doorlopen. |
grootte | Int maat () | Retourneert de grootte of het aantal elementen dat aanwezig is in de HashSet. |
splitser | Spliterator spliterator () | Retourneert een fail-fast en late binding spliterator om de HashSet te doorlopen. Deze methode is geïntroduceerd in Java 8. |
We hebben de methoden beschreven die door de klasse HashSet worden geboden, laten we nu een voorbeeld implementeren dat de belangrijkste methoden van de klasse laat zien.
Het onderstaande Java-programma demonstreert de methoden van deze klasse.
Uitgang:
Converteer HashSet naar Array
We kunnen de methode toArray () van HashSet gebruiken om de gegeven HashSet naar een array te converteren. Merk op dat het gegevenstype en de grootte van de array overeen moeten komen met die van HashSet.
Het volgende Java-programma toont deze conversie.
Uitgang:
Sorteer een HashSet
We kunnen een HashSet in Java sorteren. HashSet-elementen zijn oorspronkelijk niet gesorteerd, omdat het de volgorde van de elementen niet behoudt. We kunnen twee benaderingen volgen om een HashSet in Java te sorteren.
Met de methode Collections.sort ()
In deze benadering zetten we de HashSet om in een lijst. Vervolgens gebruiken we de methode Collections.sort () om de lijst te sorteren. Deze lijst wordt vervolgens afgedrukt.
Uitgang:
welke tool kun je gebruiken om een database visueel weer te geven en te analyseren?
Door HashSet naar TreeSet te converteren
Met behulp van deze aanpak converteren we de HashSet naar TreeSet. TreeSet handhaaft de volgorde van de elementen. Dus wanneer de HashSet wordt omgezet in TreeSet, worden de elementen op volgorde gezet.
Het volgende Java-programma toont deze conversie en sorteert daarmee de HashSet.
Uitgang:
Laten we nu enkele verschillen tussen HashSet en HashMap bespreken. We zullen ook de verschillen tussen HashSet en TreeSet bespreken.
HashSet versus HashMap
De volgende tabel toont de belangrijkste verschillen tussen HashSet en HashMap.
HashSet | Hash kaart |
---|---|
Objecten worden toegevoegd met de Add () - methode. | HashMap gebruikt de methode put () om sleutelwaardeparen toe te voegen. |
Werktuigen instellen interface. | Implementeert kaartinterface. |
Slaat objecten van een bepaald type op. | Sla sleutel-waardeparen van gegevens op. |
Staat dubbele waarden van objecten niet toe. | Staat dubbele waarden toe, maar geen dubbele sleutels. |
Kan één null-waarde hebben. | Staat een enkele null-sleutel en meerdere null-waarden toe. |
Gebruikt intern HashMap Object voor het opslaan van gegevens. | Gebruikt hashing-techniek voor het opslaan van gegevens. |
Is langzamer in vergelijking met HashMap. | HashMap is sneller. |
HashSet versus TreeSet
Hieronder staan de verschillen tussen HashSet en TreeSet vermeld.
HashSet | TreeSet |
---|---|
Heeft beperkte functionaliteit. | Biedt mogelijk functies die verschillende bewerkingen bieden en maakt het gemakkelijker om Treeset te gebruiken dan HashSet. |
Het handhaaft de volgorde van elementen niet. Slaat objecten in willekeurige volgorde op. | Behoudt de natuurlijke ordening van de elementen. |
Het staat null-waarden toe. | Het mag geen null-waarden hebben. |
Biedt betere prestaties omdat het constant tijd kost voor basisbewerkingen. | Biedt log-n tijdkosten voor basisbewerkingen. |
Veel sneller dan Treeset. | Treeset is langzamer. |
Intern geïmplementeerd met HashMap. | Treeset is intern geïmplementeerd met behulp van navigeerbare Treemap. |
Gebruikt de methode equals () ter vergelijking. | Gebruikt de methode CompareTo () ter vergelijking. |
Veel Gestelde Vragen
V # 1) Hoe werkt HashSet in Java?
Antwoord: HashSet in Java gebruikt HashMap om het object op te slaan. Er wordt één HashMap-object gemaakt wanneer een HashSet-object wordt gemaakt. De elementen of objecten die in de HashSet zijn ingevoerd, worden als sleutels in de HashMap opgeslagen.
V # 2) Wordt HashSet besteld in Java?
Antwoord: Nee, het is niet besteld in Java. Het slaat elementen in willekeurige volgorde op.
V # 3) Staat HashSet null toe?
Antwoord: ja, het staat een enkele null-waarde toe. Dit betekent dat slechts één element of object null kan zijn en niet alle.
V # 4) Waarom wordt HashSet gebruikt in Java?
Antwoord: Het wordt gebruikt om sleutel / waarde-paren in Java op te slaan. Het is vergelijkbaar met HashTable met de uitzondering dat HashSet niet gesynchroniseerd is en in tegenstelling tot HashTable null-waarden en een enkele null-sleutel toestaat. HashSet is niet geordend en kan worden gebruikt om ongeordende objecten op te slaan of wanneer de volgorde van de objecten niet vereist is.
V # 5) Wordt HashSet gesynchroniseerd in Java?
Antwoord: De HashSet is niet gesynchroniseerd in Java. Het is ook niet draadveilig. Maar we kunnen het synchroniseren met de methode synchronizedSet ().
Gevolgtrekking
HashSet is een verzameling objecten die in willekeurige volgorde staan. HashSet-klasse die HashSet in Java implementeert, gebruikt intern HashTable die HashMap implementeert.
We zagen de declaratie en initialisatie van HashSet samen met de methoden die door de klasse HashSet worden geboden.
Lees de Easy Java Training Series door.
Aanbevolen literatuur
- Java Double - Tutorial met programmeervoorbeelden
- Java Float-zelfstudie met programmeervoorbeelden
- Java Reverse String: zelfstudie met programmeervoorbeelden
- TreeSet in Java: zelfstudie met programmeervoorbeelden
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials
- Java String bevat () Method Tutorial met voorbeelden
- TreeMap in Java - Tutorial met Java TreeMap-voorbeelden
- Jagged Array in Java - Tutorial met voorbeelden