Java HashMap (Dengan Contoh)

Dalam tutorial ini, kita akan belajar mengenai kelas Java HashMap dan pelbagai operasinya dengan bantuan contoh.

The HashMapkelas rangka koleksi Java menyediakan fungsi struktur data jadual hash.

Ia menyimpan unsur dalam pasangan kunci / nilai . Di sini, kunci adalah pengecam unik yang digunakan untuk mengaitkan setiap nilai pada peta.

The HashMapkelas melaksanakan antara muka Map.

Pelaksanaan HashMap Java

Buat HashMap

Untuk membuat peta hash, kita mesti mengimport java.util.HashMappakej terlebih dahulu. Setelah kami mengimport pakej, berikut adalah bagaimana kita dapat membuat hashmaps di Java.

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

Dalam kod di atas, kami telah membuat hashmap bernama nombor. Di sini, K mewakili jenis kunci dan V mewakili jenis nilai. Sebagai contoh,

 HashMap numbers = new HashMap();

Di sini, jenis kunci adalah Stringdan jenis nilai adalah Integer.

Contoh 1: Buat HashMap di 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); ) )

Pengeluaran

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

Dalam contoh di atas, kami telah membuat HashMapbahasa yang dinamakan.

Di sini, kami telah menggunakan put()kaedah untuk menambahkan elemen ke dalam hashmap. Kami akan mengetahui lebih lanjut mengenai put()kaedah ini dalam tutorial ini.

Operasi Asas pada Java HashMap

The HashMapkelas menyediakan pelbagai kaedah untuk melaksanakan operasi yang berbeza pada hashmaps. Kami akan melihat beberapa operasi senarai susunan yang biasa digunakan dalam tutorial ini:

  • Tambahkan unsur
  • Unsur akses
  • Tukar elemen
  • Keluarkan unsur

1. Tambahkan elemen ke HashMap

Untuk menambahkan elemen tunggal ke hashmap, kami menggunakan put()kaedah HashMapkelas. Sebagai contoh,

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

Pengeluaran

 HashMap awal: () HashMap setelah meletakkan (): (Satu = 1, Dua = 2, Tiga = 3)

Dalam contoh di atas, kami telah membuat HashMapnombor bernama. Di sini, kami telah menggunakan put()kaedah untuk menambahkan unsur ke nombor.

Perhatikan kenyataannya,

 numbers.put("One", 1);

Di sini, kita memberikan Stringnilai Satu sebagai kunci dan Integernilai 1 sebagai nilai ke put()kaedah.

Bacaan yang Disyorkan

  • Java HashMap meletakkan ()
  • Java HashMap putAll ()
  • Java HashMap putIfAbsent ()

2. Akses Elemen HashMap

Kita boleh menggunakan get()kaedah untuk mengakses nilai dari hashmap. Sebagai contoh,

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

Pengeluaran

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Nilai pada indeks 1: Java

Dalam contoh di atas, perhatikan ungkapan,

 languages.get(1);

Di sini, get()kaedah mengambil kunci sebagai hujah dan mengembalikan sepadan nilai yang berkaitan dengan kekunci.

Kami juga boleh mengakses kunci , nilai-nilai , dan kunci / nilai pasang hashmap sebagai pemandangan set menggunakan keySet(), values()dan entrySet()kaedah masing-masing. Sebagai contoh,

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

Pengeluaran

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Kekunci: (1, 2, 3) Nilai: (Java, Python, JavaScript) Pemetaan kunci / Nilai: (1 = Java, 2 = Python, 3 = JavaScript )

Dalam contoh di atas, kami telah membuat hashmap bernama bahasa. Di sini, kami mengakses kunci , nilai , dan pemetaan kunci / nilai dari hashmap.

Bacaan yang Disyorkan

  • Java HashMap dapatkan ()
  • Java Hashmap getOrDefault ()
  • Set Kekunci Java HashMap ()
  • Nilai Java HashMap ()
  • Java HashMap entrySet ()

3. Tukar Nilai HashMap

Kita boleh menggunakan replace()kaedah untuk mengubah nilai yang berkaitan dengan kunci dalam hashmap. Sebagai contoh,

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

Pengeluaran

 HashMap Asal: (1 = Java, 2 = Python, 3 = JavaScript) HashMap menggunakan ganti (): (1 = Java, 2 = C ++, 3 = JavaScript)

Dalam contoh di atas, kami telah membuat hashmap bernama bahasa. Perhatikan ungkapan,

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

Di sini, kami mengubah nilai yang disebut oleh kunci 2 dengan nilai baru C ++.

The HashMapkelas juga menyediakan beberapa variasi replace()kaedah. Untuk mengetahui lebih lanjut, lawati

  • Java HashMap ganti ()
  • Java HashMap ganti All ()

4. Keluarkan Elemen HashMap

Untuk membuang elemen dari hashmap, kita dapat menggunakan kaedah remove (). Sebagai contoh,

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

Pengeluaran

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Nilai yang dikeluarkan: Python Diperbarui HashMap: (1 = Java, 3 = JavaScript)

Di sini, remove()kaedah mengambil kunci sebagai parameternya. Ia kemudian mengembalikan nilai yang berkaitan dengan kunci dan membuang entri .

Kami juga boleh membuang entri hanya dalam keadaan tertentu. Sebagai contoh,

 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.

Sekiranya parameter pilihan tidak digunakan, maka kapasiti lalai akan menjadi 16 dan faktor muatan lalai adalah 0.75 .

Artikel menarik...