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.
терминал kali linux
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, ако тази карта не съдържа съпоставяния ключ-стойност. |
Клониране на обект () | Използва се за връщане на плитко копие на този екземпляр на HashMap: самите ключове и стойности не се клонират. |
Задаване на записSet() | Използва се за връщане на изглед на колекция от съпоставянията, съдържащи се в тази карта. |
Задайте keySet() | Използва се за връщане на зададен изглед на ключовете, съдържащи се в тази карта. |
V put(обект ключ, стойност на обект) | Използва се за вмъкване на запис в картата. |
void putAll (карта карта) | Използва се за вмъкване на определената карта в картата. |
V putIfAbsent(ключ K, V стойност) | Той вмъква посочената стойност с посочения ключ в картата само ако вече не е посочен. |
V премахване (обектен ключ) | Използва се за изтриване на запис за посочения ключ. |
булево премахване (обектен ключ, стойност на обект) | Той премахва посочените стойности със съответните посочени ключове от картата. |
V compute (клавиш K, BiFunction remappingFunction) | Използва се за изчисляване на съпоставяне за посочения ключ и неговата текуща картографирана стойност (или нула, ако няма текущо съпоставяне). |
V computeIfAbsent(ключ K, Function mappingFunction) | Използва се за изчисляване на стойността му с помощта на дадената функция за съпоставяне, ако посоченият ключ все още не е свързан със стойност (или е съпоставен с нула), и го въвежда в тази карта, освен ако не е нула. |
V computeIfPresent(ключ K, BiFunction remappingFunction) | Използва се за изчисляване на ново съпоставяне, дадено на ключа и неговата текуща нанесена стойност, ако стойността за посочения ключ е налична и не е нула. |
boolean containsValue(Стойност на обект) | Този метод връща true, ако някаква стойност, равна на стойността, съществува в картата, в противен случай връща false. |
boolean containsKey(обектен ключ) | Този метод връща true, ако в картата съществува ключ, равен на ключа, в противен случай връща false. |
булево равно (обект o) | Използва се за сравняване на посочения обект с картата. |
void forEach(действие BiConsumer) | Той изпълнява даденото действие за всеки запис в картата, докато всички записи бъдат обработени или действието хвърли изключение. |
V get (обектен ключ) | Този метод връща обекта, който съдържа стойността, свързана с ключа. |
V getOrDefault(обектен ключ, V defaultValue) | Връща стойността, към която е съпоставен посоченият ключ, или defaultValue, ако картата не съдържа съпоставяне за ключа. |
булево isEmpty() | Този метод връща true, ако картата е празна; връща false, ако съдържа поне един ключ. |
V сливане (K ключ, V стойност, BiFunction remappingFunction) | Ако указаният ключ все още не е свързан със стойност или е свързан с null, той го свързва с дадената не-null стойност. |
V замяна (К ключ, 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 пример за премахване на елементи
Тук виждаме различни начини за премахване на елементи.
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
факторен java
Работа на HashMap в Java | Как работи HashMap
Разлика между HashMap и Hashtable
Как да сортирате HashMap по стойност
Разлика между HashSet и HashMap