Tässä opetusohjelmassa opitaan Java LinkedHashMap -luokasta ja sen toiminnoista esimerkkien avulla.
LinkedHashMap
Luokka Java kokoelmien politiikalle tiiviste ja linkitettyä listaa täytäntöönpanoon -käyttöliittymä.
LinkedHashMap
Rajapinta 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.LinkedHashMap
ensin 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 : LinkedHashMap
Luokan 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 true
se 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
LinkedHashMap
Luokan tarjoaa menetelmiä, joiden avulla voimme suorittaa erilaisia toimenpiteitä kartalle.
Lisää elementit LinkedHashMapiin
put()
- lisää määritetyn avaimen / arvon kartoituksen kartalleputAll()
- lisää kaikki määritetyn kartan merkinnät tähän karttaanputIfAbsent()
- 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-kartoituksistakeySet()
- 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 returnsnull
.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 mapremove(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ä LinkedHashMap
ja HashMap
toteuttaa Map
liitäntä. Niiden välillä on kuitenkin joitain eroja.
LinkedHashMap
ylläpitää kaksinkertaisesti linkitettyä luetteloa sisäisesti. Tämän vuoksi se ylläpitää elementtiensä lisäysjärjestystä.LinkedHashMap
Luokka vaatii enemmän tallennustilaa kuinHashMap
. Tämä johtuu siitä, ettäLinkedHashMap
ylläpitää linkitettyjä luetteloita sisäisesti.- Suorituskyky
LinkedHashMap
on hitaampi kuinHashMap
.