Java HashMap (с примерами)

В этом руководстве мы узнаем о классе Java HashMap и его различных операциях с помощью примеров.

HashMapКласс рамках коллекции Java обеспечивает функциональные структуры данных хеш - таблицы.

Он хранит элементы в парах ключ / значение . Здесь ключи - это уникальные идентификаторы, используемые для связывания каждого значения на карте.

HashMapКласс реализует интерфейс Map.

Реализация Java HashMap

Создать HashMap

Чтобы создать хэш-карту, мы должны java.util.HashMapсначала импортировать пакет. После того, как мы импортируем пакет, вот как мы можем создавать хэш-карты в Java.

 // hashMap creation with 8 capacity and 0.6 load factor HashMap numbers = new HashMap();

В приведенном выше коде мы создали хэш-карту с именем numbers. Здесь K представляет тип ключа, а V представляет тип значений. Например,

 HashMap numbers = new HashMap();

Здесь типа ключей является Stringи типом значений является Integer.

Пример 1: создать HashMap в Java

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap languages = new HashMap(); // add elements to hashmap languages.put("Java", 8); languages.put("JavaScript", 1); languages.put("Python", 3); System.out.println("HashMap: " + languages); ) )

Вывод

 HashMap: (Java = 8, JavaScript = 1, Python = 3)

В приведенном выше примере мы создали HashMapименованные языки.

Здесь мы использовали put()метод для добавления элементов в хэш-карту. Мы узнаем больше о put()методе позже в этом руководстве.

Основные операции в Java HashMap

HashMapКласс предоставляет различные методы для выполнения различных операций на HashMaps. В этом руководстве мы рассмотрим некоторые часто используемые операции Arraylist:

  • Добавить элементы
  • Элементы доступа
  • Изменить элементы
  • Удалить элементы

1. Добавьте элементы в HashMap

Чтобы добавить один элемент в хэш-карту, мы используем put()метод HashMapкласса. Например,

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap numbers = new HashMap(); System.out.println("Initial HashMap: " + numbers); // put() method to add elements numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("HashMap after put(): " + numbers); ) )

Вывод

 Начальная HashMap: () HashMap после put (): (Один = 1, Два = 2, Три = 3)

В приведенном выше примере мы создали HashMapименованные числа. Здесь мы использовали put()метод добавления элементов к числам.

Обратите внимание на заявление,

 numbers.put("One", 1);

Здесь мы передаем Stringзначение One в качестве ключа и Integerзначение 1 в качестве значения в put()метод.

Рекомендуемая литература

  • Java HashMap put ()
  • Java HashMap putAll ()
  • Java HashMap putIfAbsent ()

2. Доступ к элементам HashMap

Мы можем использовать этот get()метод для доступа к значению из хэш-карты. Например,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // get() method to get value String value = languages.get(1); System.out.println("Value at index 1: " + value); ) )

Вывод

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Значение в индексе 1: Java

В приведенном выше примере обратите внимание на выражение,

 languages.get(1);

Здесь get()метод принимает ключ в качестве аргумента и возвращает соответствующее значение, связанное с ключом.

Мы также можем получить доступ к ключам , значение и ключ / значение пары в HashMap как представления набора , используя keySet(), values()и entrySet()методы соответственно. Например,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // return set view of keys // using keySet() System.out.println("Keys: " + languages.keySet()); // return set view of values // using values() System.out.println("Values: " + languages.values()); // return set view of key/value pairs // using entrySet() System.out.println("Key/Value mappings: " + languages.entrySet()); ) )

Вывод

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Ключи: (1, 2, 3) Значения: (Java, Python, JavaScript) Сопоставления ключей / значений: (1 = Java, 2 = Python, 3 = JavaScript )

В приведенном выше примере мы создали хэш-карту с именем languages. Здесь мы получаем доступ к ключам , значениям и сопоставлениям ключ / значение из хэш-карты.

Рекомендуемая литература

  • Java HashMap get ()
  • Java Hashmap getOrDefault ()
  • Набор ключей Java HashMap ()
  • Значения Java HashMap ()
  • Набор записей Java HashMap ()

3. Измените значение HashMap.

Мы можем использовать этот replace()метод для изменения значения, связанного с ключом в хэш-карте. Например,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("Original HashMap: " + languages); // change element with key 2 languages.replace(2, "C++"); System.out.println("HashMap using replace(): " + languages); ) )

Вывод

 Исходная HashMap: (1 = Java, 2 = Python, 3 = JavaScript) HashMap с использованием replace (): (1 = Java, 2 = C ++, 3 = JavaScript)

В приведенном выше примере мы создали хэш-карту с именем languages. Обратите внимание на выражение,

 languages.replace(2, "C++");

Здесь мы меняем значение, указанное в клавише 2, на новое значение C ++.

The HashMap class also provides some variations of the replace() method. To learn more, visit

  • Java HashMap replace()
  • Java HashMap replaceAll()

4. Remove HashMap Elements

To remove elements from a hashmap, we can use the remove() method. For example,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // remove element associated with key 2 String value = languages.remove(2); System.out.println("Removed value: " + value); System.out.println("Updated HashMap: " + languages); ) )

Output

 HashMap: (1=Java, 2=Python, 3=JavaScript) Removed value: Python Updated HashMap: (1=Java, 3=JavaScript)

Here, the remove() method takes the key as its parameter. It then returns the value associated with the key and removes the entry.

We can also remove the entry only under certain conditions. For example,

 remove(2, "C++");

Here, the remove() method only removes the entry if the key 2 is associated with the value C++. Since 2 is not associated with C++, it doesn't remove the entry.

To learn more, visit Java HashMap remove().

Other Methods of HashMap

Method Description
clear() removes all mappings from the HashMap
compute() computes a new value for the specified key
computeIfAbsent() computes value if a mapping for the key is not present
computeIfPresent() computes a value for mapping if the key is present
merge() merges the specified mapping to the HashMap
clone() makes the copy of the HashMap
containsKey() checks if the specified key is present in Hashmap
containsValue() checks if Hashmap contains the specified value
size() returns the number of items in HashMap
isEmpty() checks if the Hashmap is empty

Iterate through a HashMap

To iterate through each entry of the hashmap, we can use Java for-each loop. We can iterate through keys only, vales only, and key/value mapping. For example,

 import java.util.HashMap; import java.util.Map.Entry; class Main ( public static void main(String() args) ( // create a HashMap HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // iterate through keys only System.out.print("Keys: "); for (Integer key : languages.keySet()) ( System.out.print(key); System.out.print(", "); ) // iterate through values only System.out.print("Values: "); for (String value : languages.values()) ( System.out.print(value); System.out.print(", "); ) // iterate through key/value entries System.out.print("Entries: "); for (Entry entry : languages.entrySet()) ( System.out.print(entry); System.out.print(", "); ) ) )

Output

 HashMap: (1=Java, 2=Python, 3=JavaScript) Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,

Note that we have used the Map.Entry in the above example. It is the nested class of the Map interface that returns a view (elements) of the map.

We first need to import the java.util.Map.Entry package in order to use this class.

This nested class returns a view (elements) of the map.

Creating HashMap from Other Maps

In Java, we can also create a hashmap from other maps. For example,

 import java.util.HashMap; import java.util.TreeMap; class Main ( public static void main(String() args) ( // create a treemap TreeMap evenNumbers = new TreeMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("TreeMap: " + evenNumbers); // create hashmap from the treemap HashMap numbers = new HashMap(evenNumbers); numbers.put("Three", 3); System.out.println("HashMap: " + numbers); ) )

Output

 TreeMap: (Four=4, Two=2) HashMap: (Two=2, Three=3, Four=4)

In the above example, we have created a TreeMap named evenNumbers. Notice the expression,

 numbers = new HashMap(evenNumbers)

Here, we are creating a HashMap named numbers using the TreeMap. To learn more about treemap, visit Java TreeMap.

Note: While creating a hashmap, we can include optional parameters: capacity and load factor. For example,

 HashMap numbers = new HashMap(8, 0.6f);

Here,

  • 8 (capacity is 8) - This means it can store 8 entries.
  • 0.6f (load factor is 0.6) - This means whenever our hash table is filled by 60%, the entries are moved to a new hash table double the size of the original hash table.

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

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