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 LinkedHashMap

Java LinkedHashMap

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

De LinkedHashMap klasse van het Java-verzamelingsframework biedt de hash-tabel en gekoppelde lijstimplementatie van de kaartinterface.

De LinkedHashMap interface breidt de HashMap-klasse uit om de vermeldingen in een hash-tabel op te slaan. Het houdt intern een dubbel gekoppelde lijst bij van al zijn inzendingen om zijn inzendingen te bestellen.


Een LinkedHashMap maken

Om een ​​gekoppelde hashmap te maken, moeten we de java.util.LinkedHashMap . importeren pakket eerst. Zodra we het pakket hebben geïmporteerd, kunnen we als volgt gekoppelde hashmaps maken in Java.

// LinkedHashMap with initial capacity 8 and load factor 0.6
LinkedHashMap<Key, Value> numbers = new LinkedHashMap<>(8, 0.6f);

In de bovenstaande code hebben we een gekoppelde hashmap gemaakt met de naam nummers .

Hier,

  • Sleutel - een unieke identificatie die wordt gebruikt om elk element (waarde) in een kaart te associëren
  • Waarde - elementen die zijn gekoppeld aan de toetsen in een kaart

Let op het onderdeel new LinkedHashMap<>(8, 0.6) . Hier is de eerste parameter capaciteit en de tweede parameter is loadFactor .

  • capaciteit - De capaciteit van deze gekoppelde hashmap is 8. Dit betekent dat er 8 items kunnen worden opgeslagen.
  • loadFactor - De belastingsfactor van deze gekoppelde hashmap is 0,6. Dit betekent dat wanneer onze hash-kaart voor 60% is gevuld, de items worden verplaatst naar een nieuwe hash-tabel van het dubbele van de oorspronkelijke hash-tabel.

Standaardcapaciteit en belastingsfactor

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

//LinkedHashMap with default capacity and load factor
LinkedHashMap<Key, Value> numbers1 = new LinkedHashMap<>();

Standaard,

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

Opmerking :De LinkedHashMap class stelt ons ook in staat om de volgorde van de items te definiëren. Bijvoorbeeld

// LinkedHashMap with specified order
LinkedHashMap<Key, Value> numbers2 = new LinkedHashMap<>(capacity, loadFactor, accessOrder);

Hier, accessOrder is een booleaanse waarde. De standaardwaarde is false . In dit geval worden items in de gekoppelde hashmap geordend op basis van hun invoegvolgorde.

Als echter true wordt doorgegeven als accessOrder , worden items in de gekoppelde hashmap gerangschikt van minst recentelijk geopend naar meest recentelijk geopend.


LinkedHashMap maken van andere kaarten

Hier is hoe we een gekoppelde hashmap kunnen maken die alle elementen van andere kaarten bevat.

import java.util.LinkedHashMap;

class Main {
    public static void main(String[] args) {
        // Creating a LinkedHashMap of even numbers
        LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>();
        evenNumbers.put("Two", 2);
        evenNumbers.put("Four", 4);
        System.out.println("LinkedHashMap1: " + evenNumbers);

        // Creating a LinkedHashMap from other LinkedHashMap
        LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(evenNumbers);
        numbers.put("Three", 3);
        System.out.println("LinkedHashMap2: " + numbers);
    }
}

Uitvoer

LinkedHashMap1: {Two=2, Four=4}
LinkedHashMap2: {Two=2, Four=4, Three=3}

Methoden van LinkedHashMap

De LinkedHashMap class biedt methoden waarmee we verschillende bewerkingen op de kaart kunnen uitvoeren.


Elementen invoegen in LinkedHashMap

  • put() - voegt de opgegeven sleutel/waarde-toewijzing in op de kaart
  • putAll() - voegt alle vermeldingen van de opgegeven kaart in op deze kaart
  • putIfAbsent() - voegt de gespecificeerde sleutel/waarde-toewijzing toe aan de kaart als de gespecificeerde sleutel niet aanwezig is in de kaart

Bijvoorbeeld,


import java.util.LinkedHashMap;

class Main {
    public static void main(String[] args) {
        // Creating LinkedHashMap of even numbers
        LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>();

        // Using put()
        evenNumbers.put("Two", 2);
        evenNumbers.put("Four", 4);
        System.out.println("Original LinkedHashMap: " + evenNumbers);

        // Using putIfAbsent()
        evenNumbers.putIfAbsent("Six", 6);
        System.out.println("Updated LinkedHashMap(): " + evenNumbers);

        //Creating LinkedHashMap of numbers
        LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
        numbers.put("One", 1);

        // Using putAll()
        numbers.putAll(evenNumbers);
        System.out.println("New LinkedHashMap: " + numbers);
    }
}

Uitvoer

Original LinkedHashMap: {Two=2, Four=4}
Updated LinkedHashMap: {Two=2, Four=4, Six=6}
New LinkedHashMap: {One=1, Two=2, Four=4, Six=6}

Toegang tot LinkedHashMap-elementen

1. Gebruik entrySet(), keySet() en values()

  • entrySet() - retourneert een set van alle sleutel/waarde-toewijzingen van de kaart
  • keySet() - geeft een set van alle sleutels van de kaart terug
  • values() - geeft een set van alle waarden van de kaart terug

Bijvoorbeeld,

import java.util.LinkedHashMap;

class Main {
    public static void main(String[] args) {
        LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();

        numbers.put("One", 1);
        numbers.put("Two", 2);
        numbers.put("Three", 3);
        System.out.println("LinkedHashMap: " + numbers);

        // Using entrySet()
        System.out.println("Key/Value mappings: " + numbers.entrySet());

        // Using keySet()
        System.out.println("Keys: " + numbers.keySet());

        // Using values()
        System.out.println("Values: " + numbers.values());
    }
}

Uitvoer

LinkedHashMap: {One=1, Two=2, Three=3}
Key/Value mappings: [One=1, Two=2, Three=3]
Keys: [One, Two, Three]
Values: [1, 2, 3]

2. Get() en getOrDefault() gebruiken

  • get() - Retourneert de waarde die is gekoppeld aan de opgegeven sleutel. Als de sleutel niet wordt gevonden, retourneert deze null .
  • getOrDefault() - Retourneert de waarde die is gekoppeld aan de opgegeven sleutel. Als de sleutel niet wordt gevonden, wordt de opgegeven standaardwaarde geretourneerd.

Bijvoorbeeld,

import java.util.LinkedHashMap;

class Main {
    public static void main(String[] args) {

        LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
        numbers.put("One", 1);
        numbers.put("Two", 2);
        numbers.put("Three", 3);
        System.out.println("LinkedHashMap: " + numbers);

        // Using get()
        int value1 = numbers.get("Three");
        System.out.println("Returned Number: " + value1);

        // Using getOrDefault()
        int value2 = numbers.getOrDefault("Five", 5);
        System.out.println("Returned Number: " + value2);
    }
}

Uitvoer

LinkedHashMap: {One=1, Two=2, Three=3}
Returned Number: 3
Returned Number: 5

LinkedHashMap-elementen verwijderd

  • remove(key) - retourneert en verwijdert de invoer die is gekoppeld aan de opgegeven sleutel van de kaart
  • remove(key, value) - verwijdert het item alleen van de kaart als de opgegeven sleutel toegewezen aan de opgegeven waarde en retourneer een booleaanse waarde

Bijvoorbeeld,

import java.util.LinkedHashMap;

class Main {
    public static void main(String[] args) {

        LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
        numbers.put("One", 1);
        numbers.put("Two", 2);
        numbers.put("Three", 3);
        System.out.println("LinkedHashMap: " + numbers);

        // remove method with single parameter
        int value = numbers.remove("Two");
        System.out.println("Removed value: " + value);

        // remove method with two parameters
        boolean result = numbers.remove("Three", 3);
        System.out.println("Is the entry Three removed? " + result);

        System.out.println("Updated LinkedHashMap: " + numbers);
    }
}

Uitvoer

LinkedHashMap: {One=1, Two=2, Three=3}
Removed value: 2
Is the entry {Three=3} removed? True
Updated LinkedHashMap: {One=1}

Andere methoden van LinkedHashMap

Methode Beschrijving
clear() verwijdert alle vermeldingen van de kaart
containsKey() controleert of de kaart de gespecificeerde sleutel bevat en geeft een booleaanse waarde terug
containsValue() controleert of de kaart de gespecificeerde waarde bevat en geeft een booleaanse waarde terug
size() geeft de grootte van de kaart terug
isEmpty() controleert of de kaart leeg is en geeft een booleaanse waarde terug

LinkedHashMap Vs. HashMap

Zowel de LinkedHashMap en de HashMap implementeert de Map koppel. Er bestaan ​​echter enkele verschillen tussen hen.

  • LinkedHashMap houdt intern een dubbel gelinkte lijst bij. Hierdoor behoudt het de invoegvolgorde van zijn elementen.
  • De LinkedHashMap klasse vereist meer opslagruimte dan HashMap . Dit komt omdat LinkedHashMap onderhoudt intern gekoppelde lijsten.
  • De prestaties van LinkedHashMap is langzamer dan HashMap .

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