Java HashMap клас реалізує інтерфейс Map, який дозволяє нам для зберігання пари ключів і значень , де ключі мають бути унікальними. Якщо ви спробуєте вставити дублікат ключа, він замінить елемент відповідного ключа. Легко виконувати операції за допомогою індексу ключа, такі як оновлення, видалення тощо. Клас HashMap знаходиться вjava.utilпакет.
HashMap у Java схожий на застарілий клас Hashtable, але він не синхронізований. Це також дозволяє нам зберігати нульові елементи, але має бути лише один нульовий ключ. Починаючи з Java 5, він позначається якHashMap, де K означає ключ, а V – значення. Він успадковує клас AbstractMap і реалізує інтерфейс Map.
Пункти, які слід пам’ятати
- Java HashMap містить значення на основі ключа.
- Java HashMap містить лише унікальні ключі.
- Java HashMap може мати один нульовий ключ і кілька нульових значень.
- Java HashMap не синхронізується.
- Java HashMap не підтримує порядок.
- Початкова ємність класу Java HashMap за замовчуванням становить 16 із коефіцієнтом завантаження 0,75.
Ієрархія класу HashMap
Як показано на малюнку вище, клас HashMap розширює клас AbstractMap і реалізує інтерфейс Map.
Оголошення класу HashMap
Давайте подивимося оголошення для класу java.util.HashMap.
java scan.nextstring
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
Параметри класу HashMap
Давайте подивимося на параметри класу java.util.HashMap.
Конструктори класу Java HashMap
Конструктор | опис |
---|---|
HashMap() | Він використовується для створення HashMap за замовчуванням. |
HashMap(Карта m) | Він використовується для ініціалізації хеш-карти за допомогою елементів даного об’єкта Map m. |
HashMap (ємність int) | Він використовується для ініціалізації ємності хеш-карти заданим цілим значенням ємності. |
HashMap(int ємність, float loadFactor) | Він використовується для ініціалізації як ємності, так і коефіцієнта завантаження хеш-карти за допомогою її аргументів. |
Методи класу Java HashMap
метод | опис |
---|---|
void clear() | Він використовується для видалення всіх відображень із цієї карти. |
логічне isEmpty() | Він використовується для повернення значення true, якщо ця карта не містить зіставлень ключ-значення. |
Об'єкт clone() | Він використовується для повернення неглибокої копії цього екземпляра HashMap: самі ключі та значення не клонуються. |
Встановити записSet() | Він використовується для повернення перегляду колекції відображень, які містяться на цій карті. |
Встановити keySet() | Він використовується для повернення встановленого вигляду ключів, які містяться в цій карті. |
V put(ключ об'єкта, значення об'єкта) | Використовується для вставки запису на карту. |
void putAll (Карта карти) | Він використовується для вставки вказаної карти в карту. |
V putIfAbsent(ключ K, значення V) | Він вставляє вказане значення з указаним ключем у карту, лише якщо воно ще не вказано. |
V видалити (ключ об'єкта) | Він використовується для видалення запису для вказаного ключа. |
логічне видалення (ключ об'єкта, значення об'єкта) | Він видаляє вказані значення з відповідними вказаними ключами з карти. |
V compute (клавіша K, BiFunction remappingFunction) | Він використовується для обчислення відображення для вказаного ключа та його поточного відображеного значення (або значення null, якщо поточного відображення немає). |
V computeIfAbsent(клавіша K, функція відображення функції) | Він використовується для обчислення його значення за допомогою заданої функції відображення, якщо вказаний ключ ще не пов’язано зі значенням (або відображено на нуль), і вводить його в цю карту, якщо він не нульовий. |
V computeIfPresent(клавіша K, BiFunction remappingFunction) | Він використовується для обчислення нового відображення з урахуванням ключа та його поточного відображеного значення, якщо значення для зазначеного ключа присутнє та відмінне від нуля. |
boolean containsValue(значення об'єкта) | Цей метод повертає true, якщо певне значення, що дорівнює значенню, існує на карті, інакше повертає false. |
логічний містить ключ (ключ об'єкта) | Цей метод повертає true, якщо певний ключ, що дорівнює ключу, існує в межах карти, інакше повертає false. |
логічне дорівнює (об'єкт o) | Використовується для порівняння зазначеного Об’єкта з Картою. |
void forEach(дія BiConsumer) | Він виконує задану дію для кожного запису на карті, доки всі записи не будуть оброблені або дія не створить виняткову ситуацію. |
V get (ключ об'єкта) | Цей метод повертає об’єкт, який містить значення, пов’язане з ключем. |
V getOrDefault(ключ об'єкта, V defaultValue) | Він повертає значення, на яке зіставляється вказаний ключ, або defaultValue, якщо карта не містить зіставлення для ключа. |
логічне isEmpty() | Цей метод повертає true, якщо карта порожня; повертає false, якщо містить хоча б один ключ. |
V merge (ключ K, значення V, BiFunction remappingFunction) | Якщо вказаний ключ ще не пов’язано зі значенням або пов’язано з null, пов’язує його з заданим ненульовим значенням. |
V замінити (ключ K, значення V) | Він замінює вказане значення на вказаний ключ. |
логічна заміна (ключ K, V старе значення, V нове значення) | Він замінює старе значення на нове значення для вказаного ключа. |
void replaceAll (функція BiFunction) | Він замінює значення кожного запису результатом виклику даної функції для цього запису, доки всі записи не будуть оброблені або функція викличе виняткову ситуацію. |
Значення колекції () | Він повертає перегляд колекції значень, що містяться на карті. |
int size() | Цей метод повертає кількість записів на карті. |
Приклад Java HashMap
Давайте розглянемо простий приклад HashMap для зберігання пари ключів і значень.
import java.util.*; public class HashMapExample1{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(4,'Grapes'); System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Перевірте зараз
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
У цьому прикладі ми зберігаємо Integer як ключ і String як значення, тому ми використовуємоHashMapяк тип. Theпоставити()метод вставляє елементи в карту.
Щоб отримати ключ і значення елементів, ми повинні викликати методи getKey() і getValue(). TheКарта.Вхідінтерфейс містить getKey() і getValue() методи. Але ми повинні викликати метод entrySet() інтерфейсу Map, щоб отримати екземпляр Map.Entry.
Немає повторюваного ключа на HashMap
Ви не можете зберігати дублікати ключів у HashMap. Однак, якщо ви спробуєте зберегти дублікат ключа з іншим значенням, він замінить це значення.
import java.util.*; public class HashMapExample2{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(1,'Grapes'); //trying duplicate key System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Перевірте зараз
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
Приклад Java HashMap для елементів add().
Тут ми бачимо різні способи вставки елементів.
import java.util.*; class HashMap1{ public static void main(String args[]){ HashMap hm=new HashMap(); System.out.println('Initial list of elements: '+hm); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('After invoking put() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } hm.putIfAbsent(103, 'Gaurav'); System.out.println('After invoking putIfAbsent() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } HashMap map=new HashMap(); map.put(104,'Ravi'); map.putAll(hm); System.out.println('After invoking putAll() method '); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: {} After invoking put() method 100 Amit 101 Vijay 102 Rahul After invoking putIfAbsent() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav After invoking putAll() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav 104 Ravi
Приклад Java HashMap для елементів remove().
Тут ми бачимо різні способи видалення елементів.
import java.util.*; public class HashMap2 { public static void main(String args[]) { HashMap map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); map.put(103, 'Gaurav'); System.out.println('Initial list of elements: '+map); //key-based removal map.remove(100); System.out.println('Updated list of elements: '+map); //value-based removal map.remove(101); System.out.println('Updated list of elements: '+map); //key-value pair based removal map.remove(102, 'Rahul'); System.out.println('Updated list of elements: '+map); } }
Вихід:
Initial list of elements: {100=Amit, 101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {102=Rahul, 103=Gaurav} Updated list of elements: {103=Gaurav}
Приклад Java HashMap для елементів replace().
Тут ми бачимо різні способи заміни елементів.
import java.util.*; class HashMap3{ public static void main(String args[]){ HashMap hm=new HashMap(); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('Initial list of elements:'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(102, 'Gaurav'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(101, 'Vijay', 'Ravi'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replaceAll((k,v) -> 'Ajay'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: 100 Amit 101 Vijay 102 Rahul Updated list of elements: 100 Amit 101 Vijay 102 Gaurav Updated list of elements: 100 Amit 101 Ravi 102 Gaurav Updated list of elements: 100 Ajay 101 Ajay 102 Ajay
Різниця між HashSet і HashMap
HashSet містить лише значення, тоді як HashMap містить запис (ключ і значення).
Приклад Java HashMap: книга
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new HashMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(1,b1); map.put(2,b2); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }Перевірте зараз
Вихід:
1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications and Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6
Пов'язані теми
Як відсортувати HashMap в Java
Коефіцієнт навантаження в HashMap
відсортований кортеж python
Робота HashMap в Java | Як працює HashMap
Різниця між HashMap і Hashtable
Як відсортувати HashMap за значенням