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();

В горния код създадохме хеш-карта с имена числа. Тук 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()метода за добавяне на елементи към hashmap. Ще научим повече за put()метода по-късно в този урок.

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

В HashMapклас осигурява различни методи за извършване на различни операции на hashmaps. Ще разгледаме някои често използвани операции с arraylist в този урок:

  • Добавете елементи
  • Елементи за достъп
  • Промяна на елементи
  • Премахване на елементи

1. Добавете елементи към HashMap

За да добавим един елемент към 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 (): (One = 1, Two = 2, Three = 3)

В горния пример създадохме HashMapимена на числата. Тук използвахме put()метода за добавяне на елементи към числа.

Забележете изявлението,

 numbers.put("One", 1);

Тук предаваме Stringстойността One като ключ и Integerстойност 1 като стойност на put()метода.

Препоръчителни четива

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

2. Достъп до HashMap Elements

Можем да използваме get()метода за достъп до стойността от hashmap. Например,

 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 )

В горния пример създадохме хеш-карта с имена езици. Тук имаме достъп до ключовете , стойностите и съпоставянията ключ / стойност от hashmap.

Препоръчителни четива

  • Java HashMap get ()
  • Java Hashmap 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 ++.

В HashMapклас са представени и някои варианти на replace()метода. За да научите повече, посетете

  • Java HashMap замени ()
  • Java HashMap replaceAll ()

4. Премахнете елементите на HashMap

За да премахнем елементи от хеш-карта, можем да използваме метода remove (). Например,

 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); ) )

Изход

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Премахната стойност: Python актуализирана HashMap: (1 = Java, 3 = JavaScript)

Тук remove()методът взема ключа за свой параметър. След това връща стойността, свързана с ключа, и премахва записа .

Също така можем да премахнем записа само при определени условия. Например,

 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 .

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