У овом упутству ћемо научити о класи Јава ЛинкедХасхМап и њеним операцијама уз помоћ примера.
LinkedHashMapКласа у збирки оквира Јава обезбеђује сто хашиш и повезане имплементацију листа Мапа интерфејса.
LinkedHashMapИнтерфејс проширује ХасхМап класу за складиштење своје улазе у хеш табели. Интерно одржава двоструко повезану листу међу свим својим уносима како би наручио своје уносе.

Креирање ЛинкедХасхМап
Да бисмо креирали повезану хеш-мапу, прво морамо да увозимо java.util.LinkedHashMapпакет. Једном када увозимо пакет, ево како можемо створити повезане хеш-мапе у Јави.
// LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f);
У горњем коду креирали смо повезану хеш-мапу названу бројеви.
Ево,
- Кључ - јединствени идентификатор који се користи за повезивање сваког елемента (вредности) на мапи
- Вредност - елементи повезани кључевима на мапи
Примети део new LinkedHashMap(8, 0.6). Овде је први параметар капацитет, а други параметар лоадФацтор .
- капацитет - Капацитет ове повезане хасх-мапе је 8. Значи, може да ускладишти 8 уноса.
- лоадФацтор - Фактор оптерећења ове повезане хеш-мапе је 0,6. То значи, кад год се наша хеш мапа попуни за 60%, уноси се премештају у нову хеш таблицу двоструке величине оригиналне хеш таблице.
Задани капацитет и фактор оптерећења
Могуће је створити повезану хеш-мапу без дефинисања њеног капацитета и фактора оптерећења. На пример,
//LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap();
Подразумевано,
- капацитет повезане хеш-мапе биће 16
- фактор оптерећења износиће 0,75
Напомена : LinkedHashMapКласа нам такође омогућава да дефинишемо редослед уноса. На пример
// LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder);
Овде је аццессОрдер логичка вредност. Његова подразумевана вредност је false. У овом случају уноси у повезаном хасхмапу се наручују на основу њиховог редоследа уметања.
Међутим, ако trueсе проследи као аццессОрдер, уноси у повезаном хасхмапу биће поређани од најмање недавно приступаних до недавно приступљених.
Прављење ЛинкедХасхМап-а од других мапа
Ево како можемо створити повезану хеш-мапу која садржи све елементе других мапа.
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); ) )
Оутпут
ЛинкедХасхМап1: (Два = 2, Четири = 4) ЛинкедХасхМап2: (Два = 2, Четири = 4, Три = 3)
Методе ЛинкедХасхМап
LinkedHashMapКласа даје методе које омогућавају да обављају различите операције на карти.
Уметните елементе у ЛинкедХасхМап
put()- на карту убацује одређено мапирање кључа / вредностиputAll()- на ову мапу убацује све уносе са наведене мапеputIfAbsent()- убацује наведено мапирање кључа / вредности на мапу ако наведени кључ није присутан на мапи
На пример,
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); ) )
Оутпут
Оригинал ЛинкедХасхМап: (Тво = 2, Фоур = 4) Ажурирано ЛинкедХасхМап: (Тво = 2, Фоур = 4, Сик = 6) Нев ЛинкедХасхМап: (Оне = 1, Тво = 2, Фоур = 4, Сик = 6)
Приступите елементима ЛинкедХасхМап
1. Коришћење ентриСет (), кеиСет () и валуес ()
entrySet()- враћа скуп свих мапирања кључа / вредности мапеkeySet()- враћа скуп свих тастера мапеvalues()- враћа скуп свих вредности мапе
На пример,
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()); ) )
Оутпут
ЛинкедХасхМап: (Оне = 1, Тво = 2, Тхрее = 3) Мапирање кључа / вредности: (Оне = 1, Тво = 2, Тхрее = 3) Тастери: (Оне, Тво, Тхрее) Вредности: (1, 2, 3 )
2. Коришћење гет () и гетОрДефаулт ()
get()- Враћа вредност повезану са наведеним кључем. Ако кључ није пронађен, враћа сеnull.getOrDefault()- Враћа вредност повезану са наведеним кључем. Ако кључ није пронађен, враћа наведену подразумевану вредност.
На пример,
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); ) )
Оутпут
ЛинкедХасхМап: (Један = 1, Два = 2, Три = 3) Враћени број: 3 Враћени број: 5
Уклоњени елементи ЛинкедХасхМап
remove(key)- враћа и уклања унос повезан са наведеним кључем са мапеremove(key, value)- уклања унос с мапе само ако се наведени кључ пресликава у наведену вриједност и враћа логичку вриједност
На пример,
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); ) )
Оутпут
ЛинкедХасхМап: (Један = 1, Два = 2, Три = 3) Уклоњена вредност: 2 Да ли је унос (Три = 3) уклоњен? Тачно ажурирана ЛинкедХасхМап: (Једна = 1)
Остале методе ЛинкедХасхМап
| Метод | Опис |
|---|---|
clear() | уклања све уносе са мапе |
containsKey() | проверава да ли карта садржи наведени кључ и враћа логичку вредност |
containsValue() | проверава да ли мапа садржи наведену вредност и враћа логичку вредност |
size() | враћа величину мапе |
isEmpty() | проверава да ли је карта празна и враћа логичку вредност |
ЛинкедХасхМап Вс. ХасхМап
И тхе LinkedHashMapи HashMapимплементира Mapинтерфејс. Међутим, постоје неке разлике међу њима.
LinkedHashMapинтерно одржава двоструко повезану листу. Због тога одржава редослед уметања својих елемената.LinkedHashMapКласа захтева више простора негоHashMap. То је зато штоLinkedHashMapинтерно одржава повезане листе.- Перформансе
LinkedHashMapсу спорије одHashMap.








