Selles õpetuses õpime näidete abil tundma Java LinkedHashMap klassi ja selle toiminguid.
LinkedHashMap
Klassi Java kogud raames annab hash tabelis ja ahelloendid rakendamise Kaart liides.
LinkedHashMap
Liides laiendab HashMap klassi salvestada oma sissekanded hash tabelit. Ettevõte hoiab sisemiselt kõigi oma kirjete vahel topeltlingitud loendit.
LinkedHashMapi loomine
Lingitud hashmi loomiseks peame java.util.LinkedHashMap
esmalt paketi importima . Kui pakett on imporditud, saate järgmiselt luua Java-s lingitud hashmapid.
// LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f);
Ülaltoodud koodis oleme loonud lingitud hashmapi nimega numbrid.
Siin,
- Võti - kordumatu identifikaator, mida kasutatakse iga elemendi (väärtuse) seostamiseks kaardil
- Väärtus - elemendid, mis on seotud võtmetega kaardil
Märka osa new LinkedHashMap(8, 0.6)
. Siin on esimene parameeter võimsus ja teine parameeter loadFactor .
- maht - selle lingitud hashmi maht on 8. See tähendab, et see võib salvestada 8 kirjet.
- loadFactor - selle ühendatud hashmapi koormustegur on 0,6. See tähendab, et alati, kui meie räsikaart on täidetud 60%, teisaldatakse kanded uude räsitabelisse, mis on topelt suurem kui algne räsitabel.
Vaikimisi maht ja koormustegur
Lingitud hashmi on võimalik luua ilma selle võimsust ja koormustegurit määramata. Näiteks,
//LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap();
Vaikimisi,
- ühendatud hashmapi maht on 16
- koormustegur on 0,75
Märkus : LinkedHashMap
klass võimaldab meil määrata ka oma kirjete järjekorra. Näiteks
// LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder);
Siin on accessOrder tõeväärtus. Selle vaikeväärtus on false
. Sel juhul järjestatakse lingitud hashmi kirjed nende sisestamise järjekorra alusel.
Kui true
see edastatakse aga kui accessOrder, järjestatakse lingitud rämpsposti kirjed kohast, kuhu on viimati juurde pääsetud, viimati juurde.
LinkedHashMapi loomine teistest kaartidest
Nii saame luua lingitud hashmi, mis sisaldab kõigi teiste kaartide elemente.
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); ) )
Väljund
LinkedHashMap1: (kaks = 2, neli = 4) LinkedHashMap2: (kaks = 2, neli = 4, kolm = 3)
LinkedHashMapi meetodid
LinkedHashMap
Klassi ette meetodid, mis võimaldavad meil sooritada erinevaid toiminguid kaardil.
Sisestage elemendid saidile LinkedHashMap
put()
- sisestab kaardile määratud võtme / väärtuse kaardistamiseputAll()
- lisab sellele kaardile kõik kirjed määratud kaardiltputIfAbsent()
- sisestab kaardile määratud võtme / väärtuse kaardistuse, kui määratud võtit kaardil pole
Näiteks,
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); ) )
Väljund
Algne LinkedHashMap: (kaks = 2, neli = 4) uuendatud LinkedHashMap: (kaks = 2, neli = 4, kuus = 6) uus LinkedHashMap: (üks = 1, kaks = 2, neli = 4, kuus = 6)
Juurdepääs LinkedHashMapi elementidele
1. Kasutades kirjetSet (), keySet () ja väärtusi ()
entrySet()
- tagastab kaardi kõigi võtmete / väärtuste kaardistamise komplektikeySet()
- tagastab kaardi kõigi võtmete komplektivalues()
- tagastab kaardi kõigi väärtuste hulga
Näiteks,
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()); ) )
Väljund
LinkedHashMap: (üks = 1, kaks = 2, kolm = 3) võtme / väärtuse kaardistamine: (üks = 1, kaks = 2, kolm = 3) võtmed: (üks, kaks, kolm) väärtused: (1, 2, 3 )
2. get () ja getOrDefault () kasutamine
get()
- tagastab määratud võtmega seotud väärtuse. Kui võtit ei leita, naaseb seenull
.getOrDefault()
- tagastab määratud võtmega seotud väärtuse. Kui võtit ei leita, tagastab see määratud vaikeväärtuse.
Näiteks,
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); ) )
Väljund
LinkedHashMap: (üks = 1, kaks = 2, kolm = 3) tagastatud number: 3 tagastatud number: 5
LinkedHashMapi elemendid on eemaldatud
remove(key)
- tagastab ja eemaldab kaardilt määratud võtmega seotud kirjeremove(key, value)
- eemaldab kirje kaardilt ainult siis, kui määratud võti on määratud väärtuseks ja tagastab tõeväärtuse
Näiteks,
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); ) )
Väljund
LinkedHashMap: (Üks = 1, Kaks = 2, Kolm = 3) Eemaldatud väärtus: 2 Kas kirje (Kolm = 3) on eemaldatud? Tõeline värskendatud LinkedHashMap: (üks = 1)
LinkedHashMapi muud meetodid
Meetod | Kirjeldus |
---|---|
clear() | eemaldab kaardilt kõik kirjed |
containsKey() | kontrollib, kas kaart sisaldab määratud võtit, ja tagastab tõeväärtuse |
containsValue() | kontrollib, kas kaart sisaldab määratud väärtust, ja tagastab tõeväärtuse |
size() | tagastab kaardi suuruse |
isEmpty() | kontrollib, kas kaart on tühi, ja tagastab tõeväärtuse |
LinkedHashMap Vs. HashMap
Nii liides LinkedHashMap
kui ka HashMap
rakendab seda Map
. Nende vahel on siiski mõningaid erinevusi.
LinkedHashMap
peab sisemiselt topeltlingitud loendit. Tänu sellele säilitab see oma elementide sisestamise järjekorra.LinkedHashMap
Klassi nõuab rohkem ruumi kuiHashMap
. Seda seetõttu, etLinkedHashMap
lingitud loendeid peetakse sisemiselt.- Esitus
LinkedHashMap
on aeglasem kuiHashMap
.