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

Java HashMap – хэш-карта на Java

Хеш-карта Java, хеш-карта на java, как работает хеш-карта на java, Пример хеш-карты Java, реализация хеш-карты на java, набор ключей хеш-карты, итерация хеш-карты, получить, поместить

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

Java HashMap-один из самых популярных классов коллекций в java. Java HashMap-это реализация на основе хэш-таблицы. HashMap в java расширяет класс AbstractMap, реализующий интерфейс карты.

Хэш-карта Java

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

  1. Java HashMap допускает нулевой ключ и нулевые значения.
  2. HashMap не является упорядоченной коллекцией. Вы можете перебирать записи хэш-карты с помощью набора ключей, но не гарантируется, что они будут в порядке их добавления в хэш-карту.
  3. Хэш-карта почти похожа на хэш-таблицу, за исключением того, что она несинхронизирована и допускает нулевой ключ и значения.
  4. HashMap использует свой внутренний узел класса для хранения записей карты.
  5. HashMap хранит записи в нескольких односвязных списках, называемых корзинами или ячейками. По умолчанию количество ячеек равно 16, и оно всегда равно 2.
  6. HashMap использует методы hashCode() и equals() для ключей для операций get и put. Таким образом, ключевой объект HashMap должен обеспечивать хорошую реализацию этих методов. Именно по этой причине неизменяемые классы лучше подходят для ключей, например, String и Integer.
  7. Java HashMap не является потокобезопасным, для многопоточной среды следует использовать класс ConcurrentHashMap или синхронизировать карту с помощью Коллекций.Метод synchronizedMap () .

Конструкторы хэш-карт Java

Java HashMap предоставляет четыре конструктора.

  1. общедоступная хэш-карта() : Наиболее часто используемый конструктор хэш-карты. Этот конструктор создаст пустую хэш-карту с начальной емкостью по умолчанию 16 и коэффициентом загрузки 0,75
  2. общедоступная хэш-карта(int initialCapacity) : Этот конструктор хэш-карты используется для указания начальной емкости и коэффициента загрузки 0,75. Это полезно, чтобы избежать повторного хэширования, если вы знаете количество отображений, которые будут храниться в хэш-карте.
  3. общедоступная хэш-карта(int initialCapacity, коэффициент загрузки с плавающей точкой) : Этот конструктор хэш-карты создаст пустую хэш-карту с заданной начальной емкостью и коэффициентом загрузки. Вы можете использовать это, если знаете максимальное количество отображений, которые будут храниться в HashMap. В распространенных сценариях этого следует избегать, поскольку коэффициент загрузки 0,75 обеспечивает хороший компромисс между пространственными и временными затратами.
  4. общедоступная хэш-карта(карта расширяет K, ? расширяет V> m) : Создает карту, имеющую те же сопоставления, что и указанная карта, и с коэффициентом загрузки 0,75 расширяет K, ? расширяет V> m)

Пример конструкторов хэш-карт Java

Ниже приведен фрагмент кода, показывающий пример хэш-карты с использованием всех вышеперечисленных конструкторов.

Map map1 = new HashMap<>();

Map map2 = new HashMap<>(2^5);

Map map3 = new HashMap<>(32,0.80f);

Map map4 = new HashMap<>(map1);

Методы хэш-карты Java

Давайте рассмотрим важные методы HashMap в java.

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

В HashMap появилось много новых методов, представленных в Java 8.

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

Пример хэш-карты 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 HashMapExample {

	public static void main(String[] args) {

		Map map = new HashMap<>();

		map.put("1", "1"); // put example
		map.put("2", "2");
		map.put("3", "3");
		map.put("4", null); // null value
		map.put(null, "100"); // null key

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

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

		boolean keyExists = map.containsKey(null);
		boolean valueExists = map.containsValue("100");

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

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

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

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

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

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

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

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

	}

}

Ниже приведен вывод приведенного выше примера программы Java HashMap.

Key = 3, Value = 3
Key = 5, Value=Default Value
keyExists=true, valueExists=true
[null=100, 1=1, 2=2, 3=3, 4=null]
map size=5
map1 mappings= {null=100, 1=1, 2=2, 3=3, 4=null}
map1 null key value = 100
map1 after removing null key = {1=1, 2=2, 3=3, 4=null}
map keys = [null, 1, 2, 3, 4]
map values = [100, 1, 2, 3, null]
map is empty=true

Как работает HashMap в java?

HashMap в java использует узел внутреннего класса для хранения сопоставлений. HashMap работает по алгоритму хеширования и использует методы hashCode() и equals() для операций забывания и ввода ключей.

HashMap использует односвязный список для хранения элементов, они называются ячейками или корзинами. Когда мы вызываем метод put, хэш-код ключа используется для определения корзины, которая будет использоваться для хранения сопоставления.

Как только ведро идентифицировано, хэш-код используется для проверки, есть ли уже ключ с тем же хэш-кодом или нет. Если существует существующий ключ с тем же хэш-кодом, то для ключа используется метод equals (). Если equals возвращает true, то значение перезаписывается, в противном случае выполняется новое сопоставление с этим сегментом односвязного списка. Если ключа с одинаковым хэш-кодом нет, то в корзину вставляется сопоставление.

Для операции получения хэш-карты снова используется ключевой хэш-код для определения корзины для поиска значения. После идентификации корзины выполняется обход записей, чтобы узнать запись с помощью хэш-кода и метода equals. Если совпадение найдено, возвращается значение, в противном случае возвращается значение null.

Здесь задействовано гораздо больше вещей, таких как алгоритм хеширования для получения корзины для ключа, повторное сопоставление отображений и т.д. Но для нашей работы просто помните, что операции с хэш-картой работают с ключом, и для предотвращения нежелательного поведения требуется хорошая реализация хэш-кода и метода equals. На рисунке ниже показано объяснение операций get и put.

Рекомендуется прочитать : Хэш-код и значение метода equals в Java

Коэффициент загрузки хэш-карты Java

Коэффициент загрузки используется для определения того, когда хэш-карта будет повторно хэширована и размер корзины будет увеличен. Значение по умолчанию ведра или емкости равно 16, а коэффициент загрузки равен 0,75. Пороговое значение для повторной обработки рассчитывается путем умножения емкости и коэффициента загрузки. Таким образом, пороговое значение по умолчанию будет равно 12. Поэтому, когда хэш-карта будет иметь более 12 сопоставлений, она будет перефразирована, и количество ячеек будет увеличено до следующего уровня 2, т. е. 32. Обратите внимание, что емкость хэш-карты всегда равна 2.

Коэффициент загрузки по умолчанию 0,75 обеспечивает хороший компромисс между пространственной и временной сложностью. Но вы можете установить для него другие значения в зависимости от ваших требований. Если вы хотите сэкономить место, вы можете увеличить его значение до 0,80 или 0,90, но тогда операции получения/размещения займут больше времени.

Набор ключей Java HashMap

Метод набора ключей Java HashMap возвращает заданное представление ключей в хэш-карте. Это представление набора поддерживается HashMap, и любые изменения в HashMap отражаются в наборе и наоборот. Ниже приведена простая программа, демонстрирующая примеры набора ключей HashMap и как поступить, если вам нужен набор ключей, не подкрепленный картой.

package com.journaldev.examples;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class HashMapKeySetExample {

	public static void main(String[] args) {

		Map map = new HashMap<>();
		map.put("1", "1");
		map.put("2", "2");
		map.put("3", "3");

		Set keySet = map.keySet();
		System.out.println(keySet);

		map.put("4", "4");
		System.out.println(keySet); // keySet is backed by Map

		keySet.remove("1");
		System.out.println(map); // map is also modified

		keySet = new HashSet<>(map.keySet()); // copies the key to new Set
		map.put("5", "5");
		System.out.println(keySet); // keySet is not modified
	}

}

Вывод вышеприведенной программы даст понять, что набор ключей поддерживается картой.

[1, 2, 3]
[1, 2, 3, 4]
{2=2, 3=3, 4=4}
[2, 3, 4]

Значения хэш-карты Java

Метод значений Java HashMap возвращает представление коллекции значений на карте. Эта коллекция поддерживается HashMap, поэтому любые изменения в HashMap будут отражены в коллекции значений и наоборот. Приведенный ниже простой пример подтверждает такое поведение коллекции значений HashMap.

package com.journaldev.examples;

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

public class HashMapValuesExample {

	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put("1", "1");
		map.put("2", "2");
		map.put("3", null);
		map.put("4", null);
		map.put(null, "100");

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

		map.remove(null);
		System.out.println("map values after removing null key = " + values);

		map.put("5", "5");
		System.out.println("map values after put = " + values);

		System.out.println(map);
		values.remove("1"); // changing values collection
		System.out.println(map); // updates in map too

	}

}

Результаты вышеприведенной программы приведены ниже.

map values = [100, 1, 2, null, null]
map values after removing null key = [1, 2, null, null]
map values after put = [1, 2, null, null, 5]
{1=1, 2=2, 3=null, 4=null, 5=5}
{2=2, 3=null, 4=null, 5=5}

Набор записей Java HashMap

Метод ввода Java HashMap возвращает заданное представление отображений. Этот набор записей поддерживается HashMap, поэтому любые изменения в карте отражаются в наборе записей и наоборот. Взгляните на приведенный ниже пример программы для примера набора данных HashMap.

package com.journaldev.examples;

import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class HashMapEntrySetExample {

	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put("1", "1");
		map.put("2", null);
		map.put(null, "100");

		Set> entrySet = map.entrySet();
		Iterator> iterator = entrySet.iterator();
		Entry next = null;
		
		System.out.println("map before processing = "+map);
		System.out.println("entrySet before processing = "+entrySet);
		while(iterator.hasNext()){
			next = iterator.next();
			System.out.println("Processing on: "+next.getValue());
			if(next.getKey() == null) iterator.remove();
		}
		
		System.out.println("map after processing = "+map);
		System.out.println("entrySet after processing = "+entrySet);
		
		Entry simpleEntry = new AbstractMap.SimpleEntry("1","1");
		entrySet.remove(simpleEntry);
		System.out.println("map after removing Entry = "+map);
		System.out.println("entrySet after removing Entry = "+entrySet);
	}

}

Ниже приведен результат, полученный вышеуказанной программой.

map before processing = {null=100, 1=1, 2=null}
entrySet before processing = [null=100, 1=1, 2=null]
Processing on: 100
Processing on: 1
Processing on: null
map after processing = {1=1, 2=null}
entrySet after processing = [1=1, 2=null]
map after removing Entry = {2=null}
entrySet after removing Entry = [2=null]

Java HashMap putIfAbsent

Простой пример метода HashMap putIfAbsent, представленного в Java 8.

package com.journaldev.examples;

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

public class HashMapPutIfAbsentExample {

	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put("1", "1");
		map.put("2", null);
		map.put(null, "100");

		System.out.println("map before putIfAbsent = "+map);
		String value = map.putIfAbsent("1", "4");
		System.out.println("map after putIfAbsent = "+map);
		System.out.println("putIfAbsent returns: "+value);
		
		System.out.println("map before putIfAbsent = "+map);
		value = map.putIfAbsent("3", "3");
		System.out.println("map after putIfAbsent = "+map);
		System.out.println("putIfAbsent returns: "+value);
	}

}

Результатом вышеуказанной программы является;

map before putIfAbsent = {null=100, 1=1, 2=null}
map after putIfAbsent = {null=100, 1=1, 2=null}
putIfAbsent returns: 1
map before putIfAbsent = {null=100, 1=1, 2=null}
map after putIfAbsent = {null=100, 1=1, 2=null, 3=3}
putIfAbsent returns: null

Хэш-карта Java для каждого

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

package com.journaldev.examples;

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;

public class HashMapForEachExample {

	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put("1", "1");
		map.put("2", null);
		map.put(null, "100");

		BiConsumer action = new MyBiConsumer();
		map.forEach(action);
		
		//lambda expression example
		System.out.println("\nHashMap forEach lambda example\n");
		map.forEach((k,v) -> {System.out.println("Key = "+k+", Value = "+v);});
	}

}

class MyBiConsumer implements BiConsumer {

	@Override
	public void accept(String t, String u) {
		System.out.println("Key = " + t);
		System.out.println("Processing on value = " + u);
	}

}

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

Key = null
Processing on value = 100
Key = 1
Processing on value = 1
Key = 2
Processing on value = null

HashMap forEach lambda example

Key = null, Value = 100
Key = 1, Value = 1
Key = 2, Value = null

Java HashMap заменяет все

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

package com.journaldev.examples;

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;

public class HashMapReplaceAllExample {

	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put("1", "1");
		map.put("2", "2");
		map.put(null, "100");

		System.out.println("map before replaceAll = " + map);
		BiFunction function = new MyBiFunction();
		map.replaceAll(function);
		System.out.println("map after replaceAll = " + map);

		// replaceAll using lambda expressions
		map.replaceAll((k, v) -> {
			if (k != null) return k + v;
			else return v;});
		System.out.println("map after replaceAll lambda expression = " + map);

	}

}

class MyBiFunction implements BiFunction {

	@Override
	public String apply(String t, String u) {
		if (t != null)
			return t + u;
		else
			return u;
	}

}

Вывод вышеприведенной программы замены хэш-карты-это;

map before replaceAll = {null=100, 1=1, 2=2}
map after replaceAll = {null=100, 1=11, 2=22}
map after replaceAll lambda example = {null=100, 1=111, 2=222}

Java HashMap computeIfAbsent

Метод HashMap computeIfAbsent вычисляет значение только в том случае, если ключ отсутствует на карте. После вычисления значения оно помещается на карту, если оно не равно нулю.

package com.journaldev.examples;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

public class HashMapComputeIfAbsent {

	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put("1", "10");
		map.put("2", "20");
		map.put(null, "100");

		Function function = new MyFunction();
		map.computeIfAbsent("3", function); //key not present
		map.computeIfAbsent("2", function); //key already present
		
		//lambda way
		map.computeIfAbsent("4", v -> {return v;});
		map.computeIfAbsent("5", v -> {return null;}); //null value won't get inserted
		System.out.println(map);
	}

}

class MyFunction implements Function {

	@Override
	public String apply(String t) {
		return t;
	}
	
}

Результатом вышеуказанной программы является;

{null=100, 1=10, 2=20, 3=3, 4=4}

Java HashMap вычислитьпредставление

Метод Java HashMap computeIfPresent пересчитывает значение, если указанный ключ присутствует, а значение не равно нулю. Если функция возвращает значение null, сопоставление удаляется.

package com.journaldev.examples;

import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;

public class HashMapComputeIfPresentExample {

	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put("1", "10");
		map.put("2", "20");
		map.put(null, "100");
		map.put("10", null);

		System.out.println("map before computeIfPresent = " + map);
		BiFunction function = new MyBiFunction1();
		for (String key : map.keySet()) {
			map.computeIfPresent(key, function);
		}
		
		System.out.println("map after computeIfPresent = " + map);
		map.computeIfPresent("1", (k,v) -> {return null;}); // mapping will be removed
		System.out.println("map after computeIfPresent = " + map);

	}

}

class MyBiFunction1 implements BiFunction {

	@Override
	public String apply(String t, String u) {
		return t + u;
	}

}

Выходные данные, полученные с помощью HashMap computeifпредставительный пример;

map before computeIfPresent = {null=100, 1=10, 2=20, 10=null}
map after computeIfPresent = {null=null100, 1=110, 2=220, 10=null}
map after computeIfPresent = {null=null100, 2=220, 10=null}

Вычисление хэш-карты Java

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

package com.journaldev.examples;

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

public class HashMapComputeExample {

	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put("1", "1");
		map.put("2", "2");
		map.put(null, "10");
		map.put("10", null);

		System.out.println("map before compute = "+map);
		for (String key : map.keySet()) {
			map.compute(key, (k,v) -> {return k+v;});
		}
		map.compute("5", (k,v) -> {return k+v;}); //key not present, v = null
		System.out.println("map after compute = "+map);
	}

}

Вывод примера вычисления хэш-карты является;

map before compute = {null=10, 1=1, 2=2, 10=null}
map after compute = {null=null10, 1=11, 2=22, 5=5null, 10=10null}

Слияние хэш-карт Java

Если указанный ключ отсутствует или связан с null, то сопоставьте его с заданным ненулевым значением. В противном случае заменяет связанное значение результатами данной функции переназначения или удаляет, если результат равен нулю.

package com.journaldev.examples;

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

public class HashMapMergeExample {

	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put("1", "1");
		map.put("2", "2");
		map.put(null, "10");
		map.put("10", null);

		for (Entry entry : map.entrySet()) {
			String key = entry.getKey();
			String value = entry.getValue();
			//merge throws NullPointerException if key or value is null
			if(key != null && value != null) 
			map.merge(entry.getKey(), entry.getValue(), 
					(k, v) -> {return k + v;});
		}
		System.out.println(map);
		
		map.merge("5", "5", (k, v) -> {return k + v;}); // key not present
		System.out.println(map);
		
		map.merge("1", "1", (k, v) -> {return null;}); // method return null, so remove
		System.out.println(map);

	}

}

Результатом вышеуказанной программы является;

{null=10, 1=11, 2=22, 10=null}
{null=10, 1=11, 2=22, 5=5, 10=null}
{null=10, 2=22, 5=5, 10=null}

Это все для HashMap на Java, я надеюсь, что ничего важного не пропущено. Поделитесь им и с другими, если вам понравилось.

Ссылка: API Doc