У цьому посібнику ми дізнаємося про клас Java HashMap та різні його операції за допомогою прикладів.
HashMap
Клас рамках колекції Java забезпечує функціональні структури даних хеш - таблиці.
Він зберігає елементи в парах ключ / значення . Тут ключі - це унікальні ідентифікатори, що використовуються для асоціювання кожного значення на карті.
HashMap
Клас реалізує інтерфейс Map.

Створіть HashMap
Для того, щоб створити хеш-карту, java.util.HashMap
спочатку потрібно імпортувати пакет. Як тільки ми імпортуємо пакет, ось як ми можемо створювати хеш-карти в Java.
// hashMap creation with 8 capacity and 0.6 load factor HashMap numbers = new HashMap();
У наведеному вище коді ми створили хеш-карту з іменами чисел. Тут 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. У цьому підручнику ми розглянемо деякі загальновживані операції з надписом:
- Додавання елементів
- Елементи доступу
- Зміна елементів
- Видалити елементи
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-хеш-карта 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 )
У наведеному вище прикладі ми створили хеш-карту з іменами мови. Тут ми отримуємо доступ до ключів , значень та зіставлення ключів / значень із хеш-карти.
Рекомендовані читання
- Java HashMap get ()
- Хеш-карта Java getOrDefault ()
- Java HashMap keySet ()
- Значення Java HashMap ()
- Java HashMap entrySet ()
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.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 .