Java LinkedHashMap

Tässä opetusohjelmassa opitaan Java LinkedHashMap -luokasta ja sen toiminnoista esimerkkien avulla.

LinkedHashMapLuokka Java kokoelmien politiikalle tiiviste ja linkitettyä listaa täytäntöönpanoon -käyttöliittymä.

LinkedHashMapRajapinta ulottuu HashMap luokka tallentaa sen merkinnät hash-taulukkoon. Se ylläpitää sisäisesti kaksinkertaisesti linkitettyä luetteloa kaikista merkinnöistään tilatakseen merkinnät.

LinkedHashMapin luominen

Linkitetyn hashmapin luomiseksi meidän on java.util.LinkedHashMapensin tuotava paketti. Kun tuot paketin, voimme luoda näin linkitetyt hashmapit Java-tiedostoon.

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

Yllä olevassa koodissa olemme luoneet linkitetyn hashmap-nimisen numeron.

Tässä,

  • Avain - yksilöllinen tunniste, jota käytetään kunkin elementin (arvon) liittämiseen karttaan
  • Arvo - elementit, jotka kartan näppäimet yhdistävät

Huomaa osa new LinkedHashMap(8, 0.6). Ensimmäinen parametri on kapasiteetti ja toinen parametri loadFactor .

  • kapasiteetti - Tämän linkitetyn hashapin kapasiteetti on 8. Tämä tarkoittaa, että se voi tallentaa 8 merkintää.
  • loadFactor - Tämän linkitetyn hashapin kuormituskerroin on 0,6. Tämä tarkoittaa, että aina kun hash-karttamme täytetään 60%, merkinnät siirretään uuteen hash-taulukkoon, joka on kaksinkertainen alkuperäisen hash-taulukon kokoon nähden.

Oletuskapasiteetti ja kuormituskerroin

On mahdollista luoda linkitetty hashmap määrittelemättä sen kapasiteettia ja kuormituskerrointa. Esimerkiksi,

 //LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap(); 

Oletuksena,

  • linkitetyn hashmapin kapasiteetti on 16
  • kuormituskerroin on 0,75

Huomaa : LinkedHashMapLuokan avulla voimme myös määrittää sen merkintöjen järjestyksen. Esimerkiksi

 // LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder); 

Tässä accessOrder on looginen arvo. Sen oletusarvo on false. Tässä tapauksessa linkitetyn hashmapin merkinnät järjestetään niiden lisäysjärjestyksen perusteella.

Jos truese kuitenkin siirretään accessOrderiksi, linkitetyn hashmapin merkinnät järjestetään viimeksi käytetyistä viimeksi käytettyihin.

LinkedHashMapin luominen muista kartoista

Näin voimme luoda linkitetyn hashmapin, joka sisältää kaikki muiden karttojen elementit.

 import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( // Creating a LinkedHashMap of even numbers LinkedHashMap evenNumbers = new LinkedHashMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("LinkedHashMap1: " + evenNumbers); // Creating a LinkedHashMap from other LinkedHashMap LinkedHashMap numbers = new LinkedHashMap(evenNumbers); numbers.put("Three", 3); System.out.println("LinkedHashMap2: " + numbers); ) ) 

Tuotos

 LinkedHashMap1: (Kaksi = 2, Neljä = 4) LinkedHashMap2: (Kaksi = 2, Neljä = 4, Kolme = 3) 

LinkedHashMap-menetelmät

LinkedHashMapLuokan tarjoaa menetelmiä, joiden avulla voimme suorittaa erilaisia toimenpiteitä kartalle.

Lisää elementit LinkedHashMapiin

  • put() - lisää määritetyn avaimen / arvon kartoituksen kartalle
  • putAll() - lisää kaikki määritetyn kartan merkinnät tähän karttaan
  • putIfAbsent() - lisää määritetyn avaimen / arvon kartoituksen, jos määritettyä avainta ei ole kartalla

Esimerkiksi,

  import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( // Creating LinkedHashMap of even numbers LinkedHashMap 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 numbers = new LinkedHashMap(); numbers.put("One", 1); // Using putAll() numbers.putAll(evenNumbers); System.out.println("New LinkedHashMap: " + numbers); ) ) 

Tuotos

 Alkuperäinen LinkedHashMap: (kaksi = 2, neljä = 4) päivitetty LinkedHashMap: (kaksi = 2, neljä = 4, kuusi = 6) uusi LinkedHashMap: (yksi = 1, kaksi = 2, neljä = 4, kuusi = 6) 

Käytä LinkedHashMap-elementtejä

1. Käyttämällä entrySet (), keySet () ja arvoja ()

  • entrySet() - palauttaa joukon kaikista kartan avain / arvo-kartoituksista
  • keySet() - palauttaa sarjan kaikkia kartan näppäimiä
  • values() - palauttaa joukon kaikista kartan arvoista

Esimerkiksi,

 import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap 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()); ) ) 

Tuotos

 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. Using get() and getOrDefault()

  • get() - Returns the value associated with the specified key. If the key is not found, it returns null.
  • getOrDefault() - Returns the value associated with the specified key. If the key is not found, it returns the specified default value.

For example,

 import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap 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); ) ) 

Output

 LinkedHashMap: (One=1, Two=2, Three=3) Returned Number: 3 Returned Number: 5 

Removed LinkedHashMap Elements

  • remove(key) - returns and removes the entry associated with the specified key from the map
  • remove(key, value) - removes the entry from the map only if the specified key mapped to be the specified value and return a boolean value

For example,

 import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap 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); ) ) 

Output

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

Muut LinkedHashMap-menetelmät

Menetelmä Kuvaus
clear() poistaa kaikki merkinnät kartalta
containsKey() tarkistaa, sisältääkö kartta määritetyn avaimen, ja palauttaa loogisen arvon
containsValue() tarkistaa, sisältääkö kartta määritetyn arvon ja palauttaa loogisen arvon
size() palauttaa kartan koon
isEmpty() tarkistaa, onko kartta tyhjä, ja palauttaa loogisen arvon

LinkedHashMap vs. HashMap

Sekä LinkedHashMapja HashMaptoteuttaa Mapliitäntä. Niiden välillä on kuitenkin joitain eroja.

  • LinkedHashMapylläpitää kaksinkertaisesti linkitettyä luetteloa sisäisesti. Tämän vuoksi se ylläpitää elementtiensä lisäysjärjestystä.
  • LinkedHashMapLuokka vaatii enemmän tallennustilaa kuin HashMap. Tämä johtuu siitä, että LinkedHashMapylläpitää linkitettyjä luetteloita sisäisesti.
  • Suorituskyky LinkedHashMapon hitaampi kuin HashMap.

Mielenkiintoisia artikkeleita...