Java LinkedHashMap

В този урок ще научим за класа Java LinkedHashMap и неговите операции с помощта на примери.

В LinkedHashMapкласа на колекции рамките на Java предоставя таблицата хашиш и списък свързано изпълнението на интерфейса Map.

В LinkedHashMapинтерфейса се простира клас HashMap да съхранява записите си в таблица, хашиш. Той вътрешно поддържа двойно обвързан списък между всички свои записи, за да ги подреди.

Създаване на LinkedHashMap

За да създадем свързана хеш-карта, първо трябва да импортираме java.util.LinkedHashMapпакета. След като импортираме пакета, ето как можем да създадем свързани хеш-карти в Java.

 // LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f); 

В горния код създадохме свързана хеш-карта с имена номера.

Тук,

  • Ключ - уникален идентификатор, използван за свързване на всеки елемент (стойност) в карта
  • Стойност - елементи, свързани с ключовете в картата

Забележете частта new LinkedHashMap(8, 0.6). Тук първият параметър е капацитет, а вторият параметър е loadFactor .

  • капацитет - Капацитетът на тази свързана хеш-карта е 8. Значение, той може да съхранява 8 записа.
  • loadFactor - Коефициентът на натоварване на тази свързана хеш-карта е 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); 

Тук accessOrder е логическа стойност. Стойността му по подразбиране е false. В този случай записите в свързаната хеш-карта се подреждат въз основа на техния ред за вмъкване.

Ако обаче trueсе предаде като accessOrder, записите в свързаната хеш-карта ще бъдат подредени от най-малко наскоро достъпен до най-скоро достъпен.

Създаване на LinkedHashMap от други карти

Ето как можем да създадем свързана хеш-карта, съдържаща всички елементи на други карти.

 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); ) ) 

Изход

 LinkedHashMap1: (Две = 2, Четири = 4) LinkedHashMap2: (Две = 2, Четири = 4, Три = 3) 

Методи на LinkedHashMap

Най- LinkedHashMapкласа предлага методи, които ни позволяват да изпълняват различни операции върху картата.

Вмъкване на елементи в 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); ) ) 

Изход

 Оригинална LinkedHashMap: (Две = 2, Четири = 4) Актуализирана LinkedHashMap: (Две = 2, Четири = 4, Шест = 6) Нова LinkedHashMap: (Едно = 1, Две = 2, Четири = 4, Шест = 6) 

Достъп до LinkedHashMap елементи

1. Използване на entrySet (), keySet () и стойности ()

  • 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()); ) ) 

Изход

 LinkedHashMap: (One = 1, Two = 2, Three = 3) Съпоставяне на ключ / стойност: (One = 1, Two = 2, Three = 3) Клавиши: (One, Two, Three) Стойности: (1, 2, 3 ) 

2. Използване на get () и getOrDefault ()

  • 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); ) ) 

Изход

 LinkedHashMap: (One = 1, Two = 2, Three = 3) Върнат номер: 3 Върнат номер: 5 

Премахнати елементи LinkedHashMap

  • 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); ) ) 

Изход

LinkedHashMap: (One = 1, Two = 2, Three = 3) Премахната стойност: 2 Премахнат ли е записът (Three = 3)? Вярно актуализирана LinkedHashMap: (One = 1)

Други методи на LinkedHashMap

Метод Описание
clear() премахва всички записи от картата
containsKey() проверява дали картата съдържа посочения ключ и връща булева стойност
containsValue() проверява дали картата съдържа посочената стойност и връща булева стойност
size() връща размера на картата
isEmpty() проверява дали картата е празна и връща булева стойност

LinkedHashMap Vs. HashMap

И двете, LinkedHashMapи HashMapизпълнява Mapинтерфейса. Между тях обаче има някои разлики.

  • LinkedHashMapподдържа вътрешно двойно свързан списък. Поради това той поддържа реда на вмъкване на своите елементи.
  • В LinkedHashMapкласа изисква повече място за съхранение, отколкото HashMap. Това е така, защото LinkedHashMapподдържа вътрешно свързани списъци.
  • Ефективността на LinkedHashMapе по-бавна от HashMap.

Интересни статии...