Java LinkedHashMap

Selles õpetuses õpime näidete abil tundma Java LinkedHashMap klassi ja selle toiminguid.

LinkedHashMapKlassi Java kogud raames annab hash tabelis ja ahelloendid rakendamise Kaart liides.

LinkedHashMapLiides 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.LinkedHashMapesmalt 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 : LinkedHashMapklass 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 truesee 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

LinkedHashMapKlassi ette meetodid, mis võimaldavad meil sooritada erinevaid toiminguid kaardil.

Sisestage elemendid saidile LinkedHashMap

  • put() - sisestab kaardile määratud võtme / väärtuse kaardistamise
  • putAll() - lisab sellele kaardile kõik kirjed määratud kaardilt
  • putIfAbsent() - 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 komplekti
  • keySet() - tagastab kaardi kõigi võtmete komplekti
  • values() - 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 see null.
  • 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 kirje
  • remove(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 LinkedHashMapkui ka HashMaprakendab seda Map. Nende vahel on siiski mõningaid erinevusi.

  • LinkedHashMappeab sisemiselt topeltlingitud loendit. Tänu sellele säilitab see oma elementide sisestamise järjekorra.
  • LinkedHashMapKlassi nõuab rohkem ruumi kui HashMap. Seda seetõttu, et LinkedHashMaplingitud loendeid peetakse sisemiselt.
  • Esitus LinkedHashMapon aeglasem kui HashMap.

Huvitavad Artiklid...