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

Java HashSet-klasse

In deze zelfstudie leren we over de Java HashSet-klasse. We leren over verschillende hash-setmethoden en -bewerkingen aan de hand van voorbeelden.

De HashSet class van het Java Collections-framework biedt de functionaliteiten van de hash-tabelgegevensstructuur.

Het implementeert de Set-interface.


Een HashSet maken

Om een ​​hash-set te maken, moeten we de java.util.HashSet . importeren pakket eerst.

Zodra we het pakket hebben geïmporteerd, kunnen we als volgt hash-sets maken in Java.

// HashSet with 8 capacity and 0.75 load factor
HashSet<Integer> numbers = new HashSet<>(8, 0.75);

Hier hebben we een hash-set gemaakt met de naam numbers .

Let op, het deel nieuwe HashSet<>(8, 0.75) . Hier is de eerste parameter capaciteit , en de tweede parameter is loadFactor .

  • capaciteit - De capaciteit van deze hash-set is 8. Dit betekent dat er 8 elementen in kunnen worden opgeslagen.
  • loadFactor - De belastingsfactor van deze hashset is 0,6. Dit betekent dat wanneer onze hash-set voor 60% is gevuld, de elementen worden verplaatst naar een nieuwe hashtabel van het dubbele van de oorspronkelijke hashtabel.

Standaardcapaciteit en belastingsfactor

Het is mogelijk om een ​​hashtabel te maken zonder de capaciteit en belastingsfactor te definiëren. Bijvoorbeeld,

// HashSet with default capacity and load factor
HashSet<Integer> numbers1 = new HashSet<>();

Standaard,

  • de capaciteit van de hash-set is 16
  • de belastingsfactor zal 0,75 zijn

Methoden van HashSet

De HashSet class biedt verschillende methoden waarmee we verschillende bewerkingen op de set kunnen uitvoeren.


Elementen invoegen in HashSet

  • add() - voegt het opgegeven element toe aan de set
  • addAll() - voegt alle elementen van de opgegeven verzameling toe aan de set

Bijvoorbeeld,

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumber = new HashSet<>();

        // Using add() method
        evenNumber.add(2);
        evenNumber.add(4);
        evenNumber.add(6);
        System.out.println("HashSet: " + evenNumber);

        HashSet<Integer> numbers = new HashSet<>();
        
        // Using addAll() method
        numbers.addAll(evenNumber);
        numbers.add(5);
        System.out.println("New HashSet: " + numbers);
    }
}

Uitvoer

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

Toegang tot HashSet-elementen

Om toegang te krijgen tot de elementen van een hash-set, kunnen we de iterator() . gebruiken methode. Om deze methode te gebruiken, moeten we de java.util.Iterator . importeren pakket. Bijvoorbeeld,

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);

        // Calling iterator() method
        Iterator<Integer> iterate = numbers.iterator();
        System.out.print("HashSet using Iterator: ");
        // Accessing elements
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Uitvoer

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

Elementen verwijderen

  • remove() - verwijdert het opgegeven element uit de set
  • removeAll() - verwijdert alle elementen uit de set

Bijvoorbeeld,

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);

        // Using remove() method
        boolean value1 = numbers.remove(5);
        System.out.println("Is 5 removed? " + value1);

        boolean value2 = numbers.removeAll(numbers);
        System.out.println("Are all elements removed? " + value2);
    }
}

Uitvoer

HashSet: [2, 5, 6]
Is 5 removed? true
Are all elements removed? true

Bewerkingen instellen

De verschillende methoden van de HashSet class kan ook worden gebruikt om verschillende set-bewerkingen uit te voeren.


Union van sets

Om de unie tussen twee sets uit te voeren, kunnen we de addAll() . gebruiken methode. Bijvoorbeeld,

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("HashSet1: " + evenNumbers);

        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(3);
        System.out.println("HashSet2: " + numbers);

        // Union of two set
        numbers.addAll(evenNumbers);
        System.out.println("Union is: " + numbers);
    }
}

Uitvoer

HashSet1: [2, 4]
HashSet2: [1, 3]
Union is: [1, 2, 3, 4]

Kruispunt van verzamelingen

Om de kruising tussen twee sets uit te voeren, kunnen we de retainAll() . gebruiken methode. Bijvoorbeeld

import java.util.HashSet;

class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("HashSet1: " + primeNumbers);

        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("HashSet2: " + evenNumbers);

        // Intersection of two sets
        evenNumbers.retainAll(primeNumbers);
        System.out.println("Intersection is: " + evenNumbers);
    }
}

Uitvoer

HashSet1: [2, 3]
HashSet2: [2, 4]
Intersection is: [2]

Verschil van sets

Om het verschil tussen de twee sets te berekenen, kunnen we de removeAll() . gebruiken methode. Bijvoorbeeld,

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);
        System.out.println("HashSet1: " + primeNumbers);

        HashSet<Integer> oddNumbers = new HashSet<>();
        oddNumbers.add(1);
        oddNumbers.add(3);
        oddNumbers.add(5);
        System.out.println("HashSet2: " + oddNumbers);

        // Difference between HashSet1 and HashSet2
        primeNumbers.removeAll(oddNumbers);
        System.out.println("Difference : " + primeNumbers);
    }
}

Uitvoer

HashSet1: [2, 3, 5]
HashSet2: [1, 3, 5]
Difference: [2]

Subset

Om te controleren of een set een subset is van een andere set of niet, kunnen we de containsAll() . gebruiken methode. Bijvoorbeeld,

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);
        System.out.println("HashSet1: " + numbers);

        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("HashSet2: " + primeNumbers);

        // Check if primeNumbers is a subset of numbers
        boolean result = numbers.containsAll(primeNumbers);
        System.out.println("Is HashSet2 is subset of HashSet1? " + result);
    }
}

Uitvoer

HashSet1: [1, 2, 3, 4]
HashSet2: [2, 3]
Is HashSet2 is a subset of HashSet1? true

Andere methoden van HashSet

Methode Beschrijving
clone() Maakt een kopie van de HashSet
contains() Zoekt de HashSet voor het opgegeven element en geeft een booleaans resultaat
isEmpty() Controleert of de HashSet is leeg
size() Retourneert de grootte van de HashSet
clear() Verwijdert alle elementen uit de HashSet

Ga voor meer informatie over HashSet-methoden naar Java HashSet (officiële Java-documentatie).


Waarom HashSet?

In Java, HashSet wordt vaak gebruikt als we willekeurig toegang moeten krijgen tot elementen. Dit komt doordat elementen in een hashtabel worden benaderd met hashcodes.

De hashcode van een element is een unieke identiteit die helpt om het element in een hashtabel te identificeren.

HashSet mag geen dubbele elementen bevatten. Daarom heeft elk hashset-element een unieke hashcode.

Opmerking: HashSet is niet gesynchroniseerd. Dat wil zeggen als meerdere threads tegelijkertijd toegang hebben tot de hash-set en een van de threads de hash-set wijzigt. Dan moet het extern worden gesynchroniseerd.


Java

  1. Java laatste trefwoord
  2. Java-instantie van Operator
  3. Java-erfenis
  4. Java geneste statische klasse
  5. Java anonieme klasse
  6. Java Singleton-klasse
  7. Java-reflectie
  8. Java-algoritmen
  9. Java ObjectOutputStream-klasse
  10. Java-generieken
  11. Java-bestandsklasse