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

Карта Java – Карта на Java

Карта Java. Пример карты Java. Пример учебника по интерфейсу карты Java. Итератор карт Java, методы карт Java 8, методы карт по умолчанию, интерфейс сбора карт.

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

Карта Java является частью фреймворка коллекций. Объект Java Map используется для хранения сопоставлений ключ-значение. Карта Java не может содержать дубликаты ключей, однако допускаются дубликаты значений.

Карта Java

Некоторые из важных моментов, связанных с картой на java, заключаются в следующем;

  1. Карта предоставляет три вида коллекции – набор ключей, набор сопоставлений ключ-значение и набор значений.
  2. Карта не гарантирует порядок отображений, однако это зависит от реализации. Например, HashMap не гарантирует порядок сопоставлений, но TreeMap гарантирует.
  3. Карта использует хэш-код и методы равенства на ключе для операций get и put. Таким образом, изменяемые классы не подходят для ключей карты. Если значения хэш-кода или равенства изменятся после put, вы не получите правильное значение в операции get.
  4. Популярными классами реализации Map в Java являются HashMap, Hashtable, TreeMap, ConcurrentHashMap и LinkedHashMap.
  5. Класс AbstractMap обеспечивает скелетную реализацию интерфейса карты, большинство конкретных классов карт расширяют класс AbstractMap и реализуют необходимые методы.

Методы отображения Java

Давайте рассмотрим некоторые из важных методов составления карт.

  1. int size() : возвращает количество сопоставлений ключ-значение на этой карте.
  2. логическое значение isEmpty() : возвращает значение true, если сопоставления отсутствуют, в противном случае значение false.
  3. логическое значение содержит значение(значение объекта) : возвращает значение true, если хотя бы один ключ сопоставлен с указанным значением, в противном случае значение false.
  4. V get(ключ объекта) : возвращает значение, сопоставленное данному ключу, если сопоставление не найдено, возвращает значение null.
  5. V put(ключ K, значение V) : добавляет отображение пары ключ-значение на карту. Если этому ключу уже сопоставлено значение, замените его. Этот метод возвращает предыдущее значение, связанное с ключом, или значение null, если для ключа не было сопоставления.
  6. V удалить(ключ объекта) : Удаляет сопоставление для ключа с этой карты, если оно присутствует. Возвращает значение, с которым эта карта ранее связывала ключ, или значение null, если карта не содержала сопоставления для ключа.
  7. void putAll(Карта расширяет K, ? расширяет V> m) : Копирует все сопоставления с указанной карты на эту карту. расширяет K, ? расширяет V> m)
  8. : Копирует все сопоставления с указанной карты на эту карту. void clear()
  9. : удаляет все сопоставления с карты. Set keySet()
  10. : возвращает заданное представление всех ключей на карте. Этот набор ключей поддерживается картой, поэтому любые изменения карты будут отражены в наборе ключей и наоборот. Коллекция значений()
  11. : возвращает представление коллекции всех значений на карте. Эта коллекция поддерживается картой, поэтому любое изменение карты будет отражаться на этой коллекции значений и наоборот. Set V>> entrySet()

В Java Map есть несколько методов, представленных в Java 8.

  1. по умолчанию V getOrDefault(ключ объекта, V Значение по умолчанию) : Возвращает значение, к которому сопоставлен указанный ключ, или значение по умолчанию, если эта карта не содержит сопоставления для ключа.
  2. по умолчанию пусто для каждого(двоичный номер super K, ? super V> действие) : Выполняет данное действие для каждой записи на этой карте. super K, ? super V> действие)
  3. : Выполняет данное действие для каждой записи на этой карте. по умолчанию пустая замена всех(бифункция super K, ? super V, ? расширяет функцию V>)
  4. : Заменяет значение каждой записи результатом вызова данной функции для этой записи. super K, ? super V, ? расширяет функцию V>) : Заменяет значение каждой записи результатом вызова данной функции для этой записи.
  5. по умолчанию V putIfAbsent(ключ K, значение V) : Если указанный ключ еще не связан со значением (или сопоставлен нулю), связывает его с заданным значением и возвращает значение null, else возвращает текущее значение.
  6. логическое удаление по умолчанию(ключ объекта, значение объекта) : Удаляет запись для указанного ключа, только если он в данный момент сопоставлен с указанным значением.
  7. логическая замена по умолчанию(K ключ, V старое значение, V новое значение) : Заменяет запись для указанного ключа, только если в данный момент сопоставлено с указанным значением.
  8. по умолчанию V заменить(ключ K, значение V) : Заменяет запись для указанного ключа, только если в данный момент он сопоставлен с каким-либо значением.
  9. по умолчанию V вычислениеfabsent(клавиша K, Функция super K, ? расширяет V> Функция сопоставления) : Если указанный ключ еще не связан со значением (или сопоставлен с нулем), пытается вычислить его значение с помощью данной функции сопоставления и вводит его в эту карту, если значение не равно нулю. super K, ? расширяет V> Функция сопоставления)
  10. : Если указанный ключ еще не связан со значением (или сопоставлен с нулем), пытается вычислить его значение с помощью данной функции сопоставления и вводит его в эту карту, если значение не равно нулю. по умолчанию V computeIfPresent(ключ K, бифункция super K, ? super V, ? расширяет V> Функция переназначения)
  11. : Если значение для указанного ключа присутствует и не равно нулю, пытается вычислить новое сопоставление с учетом ключа и его текущего сопоставленного значения. Если функция возвращает значение null, сопоставление удаляется. super K, ? super V, ? расширяет V> Функция переназначения) : Если значение для указанного ключа присутствует и не равно нулю, пытается вычислить новое сопоставление с учетом ключа и его текущего сопоставленного значения. Если функция возвращает значение null, сопоставление удаляется.

Вы заметите, что все новые методы, добавленные в интерфейс карты Java 8, являются методами по умолчанию с реализацией. Это делается для того, чтобы убедиться в отсутствии ошибок компиляции для любых классов, реализующих интерфейс карты.

Пример карты Java

Давайте рассмотрим простую программу для примера Java-карты. Мы будем использовать класс реализации карты HashMap для нашего примера программы.

package com.journaldev.examples;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapExample {

	public static void main(String[] args) {

		Map data = new HashMap<>();

		data.put("A", "A"); // put example
		data.put("B", "B");
		data.put("C", "C");
		data.put("D", null); // null value
		data.put(null, "Z"); // null key

		String value = data.get("C"); // get example
		System.out.println("Key = C, Value = " + value);

		value = data.getOrDefault("E", "Default Value");
		System.out.println("Key = E, Value=" + value);

		boolean keyExists = data.containsKey(null);
		boolean valueExists = data.containsValue("Z");

		System.out.println("keyExists= " + keyExists + ", valueExists= " + valueExists);

		Set> entrySet = data.entrySet();
		System.out.println(entrySet);

		System.out.println("data map size=" + data.size());

		Map data1 = new HashMap<>();
		data1.putAll(data);
		System.out.println("data1 mappings= " + data1);

		String nullKeyValue = data1.remove(null);
		System.out.println("data1 null key value = " + nullKeyValue);
		System.out.println("data1 after removing null key = " + data1);

		Set keySet = data.keySet();
		System.out.println("data map keys = " + keySet);

		Collection values = data.values();
		System.out.println("data map values = " + values);

		data.clear();
		System.out.println("data map is empty =" + data.isEmpty());

	}

}

Вывод приведенного выше примера программы карты является;

Key = C, Value = C
Key = E, Value=Default Value
keyExists= true, valueExists= true
[null=Z, A=A, B=B, C=C, D=null]
data map size=5
data1 mappings= {null=Z, A=A, B=B, C=C, D=null}
data1 null key value = Z
data1 after removing null key = {A=A, B=B, C=C, D=null}
data map keys = [null, A, B, C, D]
data map values = [Z, A, B, C, null]
data map is empty =true

Это все для быстрого ознакомления с интерфейсом карты Java. Для примера Java-карты новых методов, представленных в Java 8, пожалуйста, прочитайте Java HashMap .