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 LinkedHashSet

Java LinkedHashSet

In deze zelfstudie leren we over de Java LinkedHashSet-klasse en zijn methoden met behulp van voorbeelden.

De LinkedHashSet class van het Java collections framework biedt functionaliteiten van zowel de hashtabel als de gelinkte lijst datastructuur.

Het implementeert de Set-interface.

Elementen van LinkedHashSet worden opgeslagen in hash-tabellen vergelijkbaar met HashSet.

Gekoppelde hash-sets houden echter intern een dubbel gekoppelde lijst bij voor al zijn elementen. De gekoppelde lijst definieert de volgorde waarin elementen in hashtabellen worden ingevoegd.


Maak een LinkedHashSet

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

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

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

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

Let op, het onderdeel new LinkedHashSet<>(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 hashtabel met 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 ​​gekoppelde hashset te maken zonder de capaciteit en belastingsfactor te definiëren. Bijvoorbeeld,

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

Standaard,

  • de capaciteit van de gekoppelde hashset is 16
  • de belastingsfactor zal 0,75 zijn

LinkedHashSet maken van andere verzamelingen

Hier is hoe we een gekoppelde hash-set kunnen maken die alle elementen van andere collecties bevat.

import java.util.LinkedHashSet;
import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // Creating an arrayList of even numbers
        ArrayList<Integer> evenNumbers = new ArrayList<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("ArrayList: " + evenNumbers);

        // Creating a LinkedHashSet from an ArrayList
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>(evenNumbers);
        System.out.println("LinkedHashSet: " + numbers);
    }
}

Uitvoer

ArrayList: [2, 4]
LinkedHashSet: [2, 4]

Methoden van LinkedHashSet

De LinkedHashSet class biedt methoden waarmee we verschillende bewerkingen op de gekoppelde hash-set kunnen uitvoeren.


Elementen invoegen in LinkedHashSet

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

Bijvoorbeeld,

import java.util.LinkedHashSet;

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

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

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

Uitvoer

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

Toegang tot LinkedHashSet-elementen

Om toegang te krijgen tot de elementen van een gekoppelde 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.LinkedHashSet;
import java.util.Iterator;

class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("LinkedHashSet: " + numbers);

        // Calling the iterator() method
        Iterator<Integer> iterate = numbers.iterator();

        System.out.print("LinkedHashSet using Iterator: ");

        // Accessing elements
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Uitvoer

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

Opmerking :

  • hasNext() retourneert true als er een volgend element in de gekoppelde hash-set is
  • next() retourneert het volgende element in de gekoppelde hash-set

Elementen verwijderen uit HashSet

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

Bijvoorbeeld,

import java.util.LinkedHashSet;

class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("LinkedHashSet: " + numbers);

        // Using the 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

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

Bewerkingen instellen

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


Union van Sets

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

import java.util.LinkedHashSet;

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

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

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

Uitvoer

LinkedHashSet1: [2, 4]
LinkedHashSet2: [1, 3]
Union is: [1, 3, 2, 4]

Kruispunt van verzamelingen

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

import java.util.LinkedHashSet;

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

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

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

Uitvoer

LinkedHashSet1: [2, 3]
LinkedHashSet2: [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.LinkedHashSet;

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

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

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

Uitvoer

LinkedHashSet1: [2, 3, 5]
LinkedHashSet2: [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.LinkedHashSet;

class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        System.out.println("LinkedHashSet1: " + numbers);

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

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

Uitvoer

LinkedHashSet1: [1, 2, 3, 4]
LinkedHashSet2: [2, 3]
Is LinkedHashSet2 is a subset of LinkedHashSet1? true

Andere methoden van LinkedHashSet

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

Voor meer informatie over LinkedHashSet methoden, bezoek Java LinkedHashSet (officiële Java-documentatie).


LinkedHashSet versus. HashSet

Beide LinkedHashSet en HashSet implementeert de Set koppel. Er bestaan ​​echter enkele verschillen tussen hen.

  • LinkedHashSet houdt intern een gekoppelde lijst bij. Hierdoor behoudt het de invoegvolgorde van zijn elementen.
  • De LinkedHashSet klasse vereist meer opslagruimte dan HashSet . Dit komt omdat LinkedHashSet onderhoudt intern gekoppelde lijsten.
  • De prestaties van LinkedHashSet is langzamer dan HashSet . Het is vanwege gekoppelde lijsten die aanwezig zijn in LinkedHashSet .


LinkedHashSet vs. TreeSet

Dit zijn de belangrijkste verschillen tussen LinkedHashSet en TreeSet :

  • De TreeSet class implementeert de SortedSet koppel. Daarom worden elementen in een boomset gesorteerd. Echter, de LinkedHashSet class handhaaft alleen de invoegvolgorde van zijn elementen.
  • Een TreeSet is meestal langzamer dan een LinkedHashSet . Het is omdat wanneer een element wordt toegevoegd aan een TreeSet , het moet de sorteerbewerking uitvoeren.
  • LinkedHashSet maakt het invoegen van null-waarden mogelijk. We kunnen echter geen null-waarde invoegen in TreeSet .

Java

  1. Java-operators
  2. Java-opmerkingen
  3. Java if... else-instructie
  4. Java voor elke lus
  5. Java-strings
  6. Java-interface
  7. Java anonieme klasse
  8. Java proberen-met-bronnen
  9. Java-annotaties
  10. Java-beweringen
  11. Java-vector