Јава ЛинкедХасхМап

У овом упутству ћемо научити о класи Јава ЛинкедХасхМап и њеним операцијама уз помоћ примера.

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.

Занимљиви Чланци...