Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java HashSet-klasse: Complete handleiding voor operaties, methoden en verzamelingstheorie

Java HashSet-klasse

Verken de Java HashSet-klasse – de aanmaak, kernmethoden en praktische set-operaties – door beknopte voorbeelden.

De HashSet-klasse, onderdeel van Java's Collections Framework, implementeert de Set-interface en biedt hash-tabel-gebaseerde opslag.

Java HashSet-klasse: Complete handleiding voor operaties, methoden en verzamelingstheorie

Een HashSet aanmaken

Eerst, importeer java.util.HashSet:

import java.util.HashSet;

Maak dan een HashSet aan met een specifieke capaciteit en load factor:

HashSet<Integer> numbers = new HashSet<>(8, 0.75); // capacity=8, loadFactor=0.75

Parameters:

  • capaciteit – initiële bucket-aantal (8 in dit voorbeeld).
  • loadFactor – drempel die resizing triggert (0.75 betekent resize wanneer 75% vol).

Standaardwaarden gebruiken is ook gebruikelijk:

HashSet<Integer> numbers1 = new HashSet<>(); // capacity=16, loadFactor=0.75

HashSet-methoden

Hieronder de meest frequente methoden:

  • add(T element) – voegt een enkel element toe.
  • addAll(Collection<? extends T> c) – bulk invoeging.
  • remove(Object o) – verwijdert een specifiek element.
  • removeAll(Collection<? extends Object> c) – verwijdert meerdere elementen.
  • contains(Object o) – controleert aanwezigheid.
  • size() – aantal elementen.
  • clear() – verwijdert alle entries.
  • clone() – maakt een shallow copy.
  • isEmpty() – test of leeg.
  • containsAll(Collection<? extends Object> c) – subset-check.

Elementen invoegen

Voorbeeld met add en addAll:

import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> evenNumber = new HashSet<>(); evenNumber.add(2); evenNumber.add(4); evenNumber.add(6); System.out.println("HashSet: " + evenNumber); HashSet<Integer> numbers = new HashSet<>(); numbers.addAll(evenNumber); numbers.add(5); System.out.println("Nieuwe HashSet: " + numbers); } }

Output

HashSet: [2, 4, 6] Nieuwe HashSet: [2, 4, 5, 6]

Elementen benaderen

Itereer met Iterator:

import java.util.HashSet; import java.util.Iterator; class Main { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); Iterator<Integer> iterate = numbers.iterator(); System.out.print("HashSet met Iterator: "); while(iterate.hasNext()) { System.out.print(iterate.next() + ", "); } } }

Output

HashSet: [2, 5, 6] HashSet met Iterator: 2, 5, 6,

Elementen verwijderen

Enkele verwijdering en de set leegmaken:

import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); boolean removed = numbers.remove(5); System.out.println("Is 5 verwijderd? " + removed); boolean cleared = numbers.removeAll(numbers); System.out.println("Zijn alle elementen verwijderd? " + cleared); } }

Output

HashSet: [2, 5, 6] Is 5 verwijderd? true Zijn alle elementen verwijderd? true

Set-operaties

HashSet's bulk-methoden ondersteunen klassieke verzamelingstheorie-operaties.

Unie

import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> evenNumbers = new HashSet<>(); evenNumbers.add(2); evenNumbers.add(4); HashSet<Integer> numbers = new HashSet<>(); numbers.add(1); numbers.add(3); numbers.addAll(evenNumbers); System.out.println("Unie is: " + numbers); } }

Output

Unie is: [1, 2, 3, 4]

Intersectie

import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> primeNumbers = new HashSet<>(); primeNumbers.add(2); primeNumbers.add(3); HashSet<Integer> evenNumbers = new HashSet<>(); evenNumbers.add(2); evenNumbers.add(4); evenNumbers.retainAll(primeNumbers); System.out.println("Intersectie is: " + evenNumbers); } }

Output

Intersectie is: [2]

Verschil

import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> primeNumbers = new HashSet<>(); primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); HashSet<Integer> oddNumbers = new HashSet<>(); oddNumbers.add(1); oddNumbers.add(3); oddNumbers.add(5); primeNumbers.removeAll(oddNumbers); System.out.println("Verschil: " + primeNumbers); } }

Output

Verschil: [2]

Subset-check

import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); HashSet<Integer> primeNumbers = new HashSet<>(); primeNumbers.add(2); primeNumbers.add(3); boolean isSubset = numbers.containsAll(primeNumbers); System.out.println("Is primeNumbers een subset van numbers? " + isSubset); } }

Output

Is primeNumbers een subset van numbers? true

Aanvullende methoden

MethodeBeschrijving
clone()Maakt een shallow copy van de set.
contains()Controleert of een element bestaat.
isEmpty()Retourneert true als de set leeg is.
size()Aantal elementen in de set.
clear()Verwijdert alle elementen.

Voor een volledige lijst, raadpleeg de officiële Java-documentatie.

Waarom HashSet gebruiken?

Wanneer willekeurige toegang vereist is, biedt HashSet O(1)-prestaties dankzij de hash-tabel-ondersteuning. Elke element's hashCode() garandeert uniekheid, wat duplicaten voorkomt. Echter, HashSet is niet thread-veilig; externe synchronisatie is nodig voor concurrente gebruik.

Let op: Omdat HashSet niet gesynchroniseerd is, kunnen meerdere threads die het gelijktijdig wijzigen, de datastructuur corrumperen.


Java

  1. Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
  2. Java instanceof operator: een uitgebreide gids
  3. Java-erfenis meesteren: concepten, typen en praktische voorbeelden
  4. Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
  5. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  6. Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
  7. Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
  8. Java Collection-algoritmes: Sorteren, shuffelen en meer
  9. Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
  10. Java Generics: Herbruikbare, type-veilige code bouwen
  11. Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen