У овом упутству ћемо научити о класи Јава ЛинкедХасхМап и њеним операцијама уз помоћ примера.
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
.