linkedhashmap java linkedhashmap example implementation
Tento tutoriál vysvetľuje všetko o LinkedHashMap v Jave. Vrátane príkladu a metód LinkedHashMap v Implementácii v Jave, LinkedHashMap vs HashMap:
LinkedHashMap v Jave je implementácia, ktorá kombinuje implementáciu HashTable a LinkedList. Implementuje rozhranie Mapy. Páry kľúč - hodnota v LinkedHashMap majú predvídateľné poradie iterácie.
Okrem rozhrania Map LinkedHashMap rozširuje aj triedu HashMap.
=> Navštívte tu a pozrite si sériu školení Java pre všetkých.
ako otvoriť súbor .apk
Čo sa dozviete:
LinkedHashMap v Jave
Niektoré z hlavných charakteristík LinkedHashMap sú:
- Obsahuje hodnoty založené na kľúčoch.
- Udržuje poradie vkladania párov kľúč - hodnota.
- Nepovoľuje duplikáty, má jedinečné prvky.
- Môže mať jediný nulový kľúč. Ale umožňuje viac nulových hodnôt.
- Java LinkedHashMap nie je synchronizovaná.
Vyhlásenie LinkedHashMap
Trieda LinkedHashMap v Jave je súčasťou balíka java.util.
Všeobecná deklarácia tejto triedy v Jave je nasledovná:
public class LinkedHashMap extends HashMap implements Map
Tu K => typ kľúčov na mape.
V => typ hodnôt namapovaných na kľúče.
Hierarchia tried LinkedHashMap je uvedená nižšie:
Ako je znázornené na obrázku vyššie, LinkedHashMap dedí triedy HashMap a AbstractMap a implementuje rozhranie Map.
Príklad LinkedHashMap
Nižšie je uvedený jednoduchý príklad.
import java.util.*; class Main{ public static void main(String args()){ //declare and initialize LinkedHashMap LinkedHashMap num_map=new LinkedHashMap(); num_map.put(1,'ONE'); num_map.put(2,'TWO'); num_map.put(3,'THREE'); num_map.put(4,'FOUR'); num_map.put(5,'FIVE'); System.out.println('The contents of LinkedHashMap:'); //retrieve the key-value pairs as set using entrySet & print each entry for(Map.Entry m:num_map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Výkon:
Obsah LinkedHashMap:
1 JEDEN
2 DVA
3 TRI
4 ŠTYRI
5 PIAT
Konštruktéri a metódy
Poďme sa rozprávať o konštruktoroch a metódach poskytovaných triedou LinkedHashMap. Najskôr si povieme niečo o konštruktoroch a následne o metódach.
Konštruktéri
Prototyp konštruktéra | Popis | |
---|---|---|
keySet | Set keySet () | Vráti sadu kľúčov na mape. |
LinkedHashMap () | Predvolený konštruktor pre LinkedHashMap. | |
LinkedHashMap (int kapacita) | Vytvorí objekt LinkedHashMap s danou kapacitou. | |
LinkedHashMap (int kapacita, float loadFactor) | Vytvorí objekt LinkedHashMap s danou kapacitou a loadFactor. | |
LinkedHashMap (int kapacita, float loadFactor, boolean accessOrder) | Vytvorí objekt LinkedHashMap s danou kapacitou a loadFactor. Zadaný je tiež režim objednávania (accessOrder). | |
LinkedHashMap (mapa m) | Vytvorí objekt LinkedHashMap a inicializuje ho pomocou hodnôt z mapy m odovzdaných ako argument. |
Metódy
Metóda | Metóda Prototyp | Popis |
---|---|---|
dostať | V get (kľúč objektu) | Vráti hodnotu pre daný kľúč. |
jasný | prázdne miesto jasné () | Vymaže všetky páry kľúč - hodnota na mape. |
containsValue | boolean containsValue (hodnota objektu) | Skontroluje, či mapa obsahuje jeden alebo viac kľúčov namapovaných na danú hodnotu. Ak áno, vráti hodnotu true. |
entrySet | Nastaviť | Vráti množinu záznamov na mape. |
pre každý | void forEach (BiConsumer action) | Vykoná danú akciu pre všetky záznamy na mape. |
getOrDefault | V getOrDefault (kľúč objektu, V defaultValue) | Vráti hodnotu namapovanú na kľúč. Ak nie je namapovaná žiadna hodnota, vráti sa predvolená hodnota. |
removeEldestEntry | chránený boolean removeEldestEntry (Map.Entry eldest) | Odstráni najstarší záznam na mape a po odstránení sa vráti ako true. |
nahradiť všetko | void replaceAll (funkcia BiFunction) | Pri každom zadaní vyvolá danú funkciu a nahradí výsledok funkcie hodnotami. |
hodnoty | Hodnoty zbierky () | Vráti kolekciu hodnôt na mape. |
Implementácia v Jave
Program Java uvedený nižšie ukazuje implementáciu LinkedHashMap demonštráciou vyššie diskutovaných metód.
import java.util.*; public class Main { public static void main(String a()) { //declare LinkedHashMap and initialize it with values LinkedHashMap colors_map = new LinkedHashMap(); colors_map.put('one', 'Red'); colors_map.put('two', 'Green'); colors_map.put('three', 'Blue'); // Original LinkedHashMap System.out.println('Original LinkedHashMap:' + colors_map); //isEmpty () System.out.println('LinkedHashMap 'colors_map' empty?:' + colors_map.isEmpty()); //size () System.out.println('Size of the map: ' + colors_map.size()); //get () System.out.println('Value for key = 'one':' + colors_map.get('one')); //containsKey () System.out.println('colors_map contains key = 'two':'+ colors_map.containsKey('two')); //containsValue () System.out.println('colors_map contains value 'ree':' + colors_map.containsValue('ree')); //remove () System.out.println('delete element 'one': ' + colors_map.remove('one')); System.out.println('Updated colors_map:' + colors_map); } }
Výkon:
Originálna LinkedHashMap: {jedna = červená, dve = zelená, tri = modrá}
LinkedHashMap ‘colors_map’ empty?: False
Veľkosť mapy: 3
Hodnota pre kľúč = ‘jeden’: červená
colors_map contains key = ‘two’: true
colors_map obsahuje hodnotu ‘ree’: false
vymazať prvok „jeden“: červená
Aktualizovaná mapa farieb: {dva = zelená, tri = modrá}
V tomto programe deklarujeme farebnú mapu a inicializujeme ju. Potom použijeme rôzne metódy diskutované vyššie, aby sme dosiahli výsledky.
LinkedHashMap vs HashMap
LinkedHashMap | HashMap | ||
---|---|---|---|
Časová zložitosť základných operácií | Alebo (1) | O (1) | Alebo (1) |
Realizuje objednané mapy. | Implementuje neusporiadané mapy. | ||
Používa dvojnásobne prepojený zoznam segmentov. | Používa hash tabuľku. | ||
Udržuje poriadok pri iterácii prvkov. | Pri iterácii neudržuje poradie. | ||
Vyžaduje viac pamäte. | Vyžaduje menej pamäte ako LinkedHashMap. | ||
Základné operácie ako pridávanie, odstraňovanie, vyhľadávanie atď. Sú pomalšie. | Základné operácie ako pridávanie a odstraňovanie vyhľadávania sú rýchlejšie. |
HashMap Vs TreeMap Vs LinkedHashMap
Teraz si porovnajme tri implementácie máp, viď. HashMap, TreeMap a LinkedHashMap.
najlepší čistiaci softvér pre Windows 10
Nasledujúca tabuľka zobrazuje porovnanie / rozdiel.
Parameter porovnania | HashMap | LinkedHashMap | TreeMap |
---|---|---|---|
Rozhranie | Mapa | Mapa | Mapa, SortedMap, NavigableMap |
Dátová štruktúra | Zoznam vedier | Dvojitý prepojený zoznam segmentov | Červeno-čierny strom |
Iteračný príkaz | Nie je udržiavané objednávanie. | Zoradené podľa objednávky | Zoradené podľa prirodzeného usporiadania prvkov |
Null Keys | Sú povolené | Sú povolené | Nepovolené |
Synchronizácia | Nesynchronizované | Nesynchronizované | Nesynchronizované |
Požiadavka na kľúče | Je potrebné prepísať metódy equals () a hashCode () | Je potrebné prepísať metódy equals () a hashCode () | Prirodzené usporiadanie je zachované alebo je potrebné dodať komparátor |
často kladené otázky
Otázka 1) Čo je LinkedHashMap v Jave?
Odpoveď: LinkedHashMap v Jave je implementovaná ako kombinácia HashTable a LinkedList. Implementuje mapové rozhranie. Má predvídateľné poradie iterácií. Vnútorne používa na vstupy dvojnásobne prepojený zoznam.
Otázka č. 2)Ako funguje LinkedHashMap v Jave?
Odpoveď: Je to podobné ako HashMap, ale líši sa od HashMap v poradí vkladania, ktoré si LinkedHashMap udržiava. Prvky v LinkedHashMap sa ukladajú rovnakým spôsobom, ako sa zadávajú v dátovej štruktúre.
Otázka č. 3)Ako prechádzam cyklom LinkedHashMap?
Odpoveď: Môžeme prechádzať cez LinkedHashMap pomocou iterátora.
Nasledujú kroky, ktoré môžeme vykonať pri iterácii pomocou LinkedHashMap pomocou iterátora:
- Vytvorte nový objekt LinkedHashMap.
- Na vloženie párov kľúč - hodnota do mapy použite metódu Put API.
- Zavolajte metódu API entrySet () na získanie množiny párov kľúč - hodnota na mape.
- Vyvolajte iterátor v tejto sade, aby ste načítali každý pár kľúč - hodnota pomocou metód API getKey () a getValue ().
Otázka č. 4)Aké je použitie LinkedHashMap v Jave?
Odpoveď: LinkedHashMap v Jave sa hlavne používa na zachovanie objednávky. Môže sa tiež použiť na zachovanie poradia prístupu, pomocou ktorého sa ku klávesom pristupuje. Pretože je rýchlejší ako HashMap, je možné použiť LinkedHashMap namiesto HashMap, kde je kritický výkon.
Otázka č. 5)Je HashMap rýchlejší ako LinkedHashMap?
Odpoveď: Obe sú si výkonovo podobné. HashMap potrebuje v porovnaní s LinkedHashMap menej pamäte, pretože HashMap neudržuje poradie prístupu. HashMap je teda porovnateľne rýchlejší.
Záver
V tomto tutoriáli sme diskutovali o LinkedHashMap v Jave. Videli sme podrobnosti týkajúce sa deklarácie triedy, hierarchie tried, konštruktorov a metód.
c ++ náhodné číslo medzi 0 a 100
Dozvedeli sme sa tiež primárne rozdiely medzi, LinkedHashMap a HashMap. Diskutovali sme tiež o trojcestnom rozdiele medzi LinkedHashMap, HashMap a TreeMap.
V našom pripravovanom výučbe sa budeme venovať ďalším témam o Java Collection Framework.
=> Dajte si pozor na jednoduchú sériu školení Java tu.
Odporúčané čítanie
- Výukový program Java Reflection s príkladmi
- Hĺbkové návody pre zatmenie pre začiatočníkov
- Čo je Java HashTable - implementácia a príklad HashTable
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Modifikátory prístupu v prostredí Java - návod s príkladmi
- Výukový program Java SWING: Kontajnery, komponenty a spracovanie udalostí
- Java String obsahuje () Výukový program metód s príkladmi
- Výukový program Java String s programom String Buffer a String Builder