Рубрики
Без рубрики

Класс Java LinkedHashMap

LinkedHashMap в Java-это часть платформы коллекций Java. LinkedHashMap-это реализация хэш-таблицы и связанного списка интерфейса карты.

Автор оригинала: Pankaj Kumar.

LinkedHashMap на Java

  1. Это часть фреймворка Java Collections .
  2. LinkedHashMap-это реализация хэш-таблицы и связанного списка интерфейса Map .
  3. LinkedHashMap расширяет HashMap класс.
  4. LinkedHashMap поддерживает порядок вставки. Таким образом, при повторении его ключей элементы возвращаются в том порядке, в котором они были вставлены.
  5. LinkedHashMap использует двусвязный список для поддержания порядка вставки.
  6. Если ключ вставляется повторно, порядок его вставки не изменяется.
  7. Это полезно, когда вам нужна карта, на которой мы можем перебирать записи в порядке вставки, но не хотим иметь дело с дополнительными накладными расходами, связанными с Картой деревьев .
  8. LinkedHashMap допускает нулевые записи для ключа и значения. Может быть один нулевой ключ и несколько нулевых значений.
  9. LinkedHashMap не является потокобезопасным. Если вы хотите использовать его в многопоточной среде, вы можете создать синхронизированную оболочку поверх него, используя Коллекции.Метод synchronizedMap ().

Конструкторы LinkedHashMap

В классе LinkedHashMap есть 5 конструкторов.

Конструкторы LinkedHashMap

  1. LinkedHashMap() : создает пустой экземпляр LinkedHashMap с начальной емкостью по умолчанию (16) и коэффициентом загрузки (0,75).
  2. LinkedHashMap(int initialCapacity) : создает пустой экземпляр LinkedHashMap с заданной начальной емкостью и коэффициентом загрузки (0,75). Он выдает Исключение IllegalArgumentException , если начальная емкость отрицательна.
  3. LinkedHashMap(int initialCapacity, коэффициент загрузки с плавающей точкой) : создает пустой экземпляр LinkedHashMap с заданной начальной емкостью и коэффициентом загрузки. Он создает исключение IllegalArgumentException, если начальная емкость отрицательна или коэффициент нагрузки не является положительным.
  4. LinkedHashMap(int initialCapacity, коэффициент загрузки с плавающей точкой, логический порядок доступа) : создает пустое LinkedHashMap с заданной начальной емкостью, коэффициентом загрузки и режимом упорядочения. Если порядок доступа верен – режим заказа-порядок доступа, в противном случае порядок вставки.
  5. LinkedHashMap(карта расширяет K, ? расширяет V> m) : создает экземпляр LinkedHashMap, упорядоченный вставкой, с теми же сопоставлениями, что и указанная карта. Он выдает Исключение NullPointerException , если данная карта равна нулю. расширяет K, ? расширяет V> m)

Вот простой пример, подтверждающий, что LinkedHashMap поддерживает порядок вставки своих ключей.

package com.journaldev.examples;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapExamples {

	public static void main(String[] args) {

		Map vowelsMap = new HashMap<>();
		vowelsMap.put(1, "a");
		vowelsMap.put(2, "e");
		vowelsMap.put(5, "u");
		vowelsMap.put(4, "o");
		vowelsMap.put(3, "i");

		vowelsMap.forEach((k, v) -> System.out.println("[" + k + "," + v + "]"));

		LinkedHashMap lhm = new LinkedHashMap<>();
		lhm.put(1, "A");
		lhm.put(2, "E");
		lhm.put(5, "U");
		lhm.put(4, "O");
		lhm.put(3, "I");

		lhm.forEach((k, v) -> System.out.println("[" + k + "," + v + "]"));
	}
}

Выход:

[1,a]
[2,e]
[3,i]
[4,o]
[5,u]

[1,A]
[2,E]
[5,U]
[4,O]
[3,I]

Методы LinkedHashMap

Для класса LinkedHashMap не существует эксклюзивных методов. Он использует методы из класса HashMap, расширяя его. Но некоторые методы переопределены для порядка вставки записей.

  • containsValue(значение объекта) : использует метод связанного списка для более быстрого разрешения.
  • get(ключ объекта), getOrDefault(ключ объекта, V Значение по умолчанию)
  • очистить()
  • набор ключей(): возвращается экземпляр связанного набора ключей.
  • forEach(), replaceAll(): использует подход реализации связанного списка для итерации порядка вставки и более быстрой обработки.

LinkedHashMap против HashMap

  • LinkedHashMap расширяет класс HashMap. Таким образом, HashMap является суперклассом класса LinkedHashMap.
  • LinkedHashMap поддерживает порядок вставки, в котором HashMap не поддерживает никакого порядка записей.
  • Повторение записей LinkedHashMap всегда приводит к одной и той же последовательности элементов. Повторение записей хэш-карты может привести к случайной последовательности, поскольку порядок не поддерживается.
  • Производительность LinkedHashMap немного ниже, чем у HashMap, из-за дополнительных затрат на поддержание связанного списка, за одним исключением: повторение представлений коллекции LinkedHashMap требует времени, пропорционального размеру карты, независимо от ее емкости. Итерация по хэш-карте, вероятно, будет более дорогостоящей, требующей времени, пропорционального ее емкости.

LinkedHashMap против карты деревьев

Если вы хотите получить доступ к элементам карты в порядке вставки, рекомендуется использовать LinkedHashMap. Он обеспечивает высокую производительность и не требует дополнительных затрат, связанных с картой деревьев.

Ссылка : Документы API LinkedHashMap