Java HashMap (Có ví dụ)

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về lớp Java HashMap và các hoạt động khác nhau của nó với sự trợ giúp của các ví dụ.

Các HashMaplớp học của khuôn khổ bộ sưu tập Java cung cấp các chức năng của cấu trúc dữ liệu bảng băm.

Nó lưu trữ các phần tử trong các cặp khóa / giá trị . Ở đây, các khóa là số nhận dạng duy nhất được sử dụng để liên kết từng giá trị trên bản đồ.

Các HashMaplớp cài đặt giao diện bản đồ.

Triển khai Java HashMap

Tạo HashMap

Để tạo một bản đồ băm, java.util.HashMaptrước tiên chúng ta phải nhập gói. Sau khi chúng tôi nhập gói, đây là cách chúng tôi có thể tạo các bản đồ băm trong Java.

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

Trong đoạn mã trên, chúng tôi đã tạo một bản đồ băm có tên là các số. Ở đây, K đại diện cho loại khóa và V đại diện cho loại giá trị. Ví dụ,

 HashMap numbers = new HashMap();

Tại đây, các loại phímStringvà loại giá trịInteger.

Ví dụ 1: Tạo HashMap trong 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); ) )

Đầu ra

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

Trong ví dụ trên, chúng tôi đã tạo một HashMapngôn ngữ được đặt tên.

Ở đây, chúng tôi đã sử dụng put()phương pháp để thêm các phần tử vào hashmap. Chúng ta sẽ tìm hiểu thêm về put()phương pháp sau trong hướng dẫn này.

Các thao tác cơ bản trên Java HashMap

Các HashMaplớp học cung cấp phương pháp khác nhau để thực hiện các hoạt động khác nhau trên hashmaps. Chúng ta sẽ xem xét một số thao tác trong danh sách mảng thường được sử dụng trong hướng dẫn này:

  • Thêm các yếu tố
  • Truy cập các phần tử
  • Thay đổi các yếu tố
  • Loại bỏ các yếu tố

1. Thêm các phần tử vào HashMap

Để thêm một phần tử duy nhất vào bản đồ băm, chúng ta sử dụng put()phương thức của HashMaplớp. Ví dụ,

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

Đầu ra

 HashMap ban đầu: () HashMap sau khi put (): (Một = 1, Hai = 2, Ba = 3)

Trong ví dụ trên, chúng ta đã tạo một HashMapsố được đặt tên. Ở đây, chúng tôi đã sử dụng put()phương pháp thêm phần tử vào số.

Lưu ý tuyên bố,

 numbers.put("One", 1);

Ở đây, chúng ta đang chuyển Stringgiá trị One làm khóa và Integergiá trị 1 làm giá trị cho put()phương thức.

Bài đọc được đề xuất

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

2. Truy cập các phần tử HashMap

Chúng ta có thể sử dụng get()phương thức để truy cập giá trị từ hashmap. Ví dụ,

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

Đầu ra

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Giá trị tại chỉ mục 1: Java

Trong ví dụ trên, hãy chú ý biểu thức,

 languages.get(1);

Ở đây, get()phương thức lấy khóa làm đối số của nó và trả về giá trị tương ứng được liên kết với khóa.

Chúng tôi cũng có thể truy cập các phím , giá trị , và chìa khóa / giá trị cặp của hashmap như quan điểm thiết lập sử dụng keySet(), values()entrySet()phương pháp tương ứng. Ví dụ,

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

Đầu ra

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Các khóa: (1, 2, 3) Giá trị: (Java, Python, JavaScript) Ánh xạ khóa / giá trị: (1 = Java, 2 = Python, 3 = JavaScript )

Trong ví dụ trên, chúng tôi đã tạo một bản đồ băm có tên các ngôn ngữ. Ở đây, chúng tôi đang truy cập các khóa , giá trị và ánh xạ khóa / giá trị từ bản đồ băm.

Bài đọc được đề xuất

  • Java HashMap get ()
  • Java Hashmap getOrDefault ()
  • Java HashMap keySet ()
  • Giá trị Java HashMap ()
  • Java HashMap entrySet ()

3. Thay đổi giá trị HashMap

Chúng ta có thể sử dụng replace()phương pháp này để thay đổi giá trị được liên kết với một khóa trong bản đồ băm. Ví dụ,

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

Đầu ra

 Bản đồ gốc HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Bản đồ HashMap sử dụng Replace (): (1 = Java, 2 = C ++, 3 = JavaScript)

Trong ví dụ trên, chúng tôi đã tạo một bản đồ băm có tên các ngôn ngữ. Chú ý biểu thức,

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

Ở đây, chúng tôi đang thay đổi giá trị được tham chiếu bởi khóa 2 bằng giá trị mới C ++.

Các HashMaplớp học cũng đưa ra một số biến thể của replace()phương pháp. Để tìm hiểu thêm, hãy truy cập

  • Java HashMap thay thế ()
  • Java HashMap thay thếAll ()

4. Xóa các phần tử HashMap

Để xóa các phần tử khỏi một bản đồ băm, chúng ta có thể sử dụng phương thức remove (). Ví dụ,

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

Đầu ra

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Giá trị bị xóa: Bản đồ cập nhật Python: (1 = Java, 3 = JavaScript)

Ở đây, remove()phương thức nhận khóa làm tham số của nó. Sau đó, nó trả về giá trị được liên kết với khóa và xóa mục nhập .

Chúng tôi cũng có thể xóa mục nhập chỉ trong một số điều kiện nhất định. Ví dụ,

 remove(2, "C++");

Ở đây, remove()phương thức chỉ xóa mục nhập nếu khóa 2 được liên kết với giá trị C ++ . Vì 2 không được liên kết với C ++ nên nó không xóa mục nhập.

Để tìm hiểu thêm, hãy truy cập Java HashMap remove ().

Các phương pháp HashMap khác

phương pháp Sự miêu tả
thông thoáng() loại bỏ tất cả các ánh xạ khỏi HashMap
compute () tính toán một giá trị mới cho khóa được chỉ định
computeIfAbsent () tính toán giá trị nếu ánh xạ cho khóa không có
computeIfPresent () tính toán một giá trị để ánh xạ nếu có khóa
hợp nhất () hợp nhất ánh xạ được chỉ định với HashMap
clone () tạo bản sao của HashMap
chứaKey () kiểm tra xem khóa được chỉ định có trong Hashmap hay không
chứaValue () kiểm tra xem Hashmapcó chứa giá trị được chỉ định không
kích thước() trả về số lượng mặt hàng trong HashMap
isEmpty () kiểm tra xem Hashmapcó trống không

Lặp lại qua HashMap

Để lặp qua từng mục của bản đồ băm, chúng ta có thể sử dụng Java cho từng vòng lặp. Chúng tôi có thể lặp qua các phím chỉ , chỉ thung lũng , và lập bản đồ chìa khóa / giá trị . Ví dụ,

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

Đầu ra

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Các phím: 1, 2, 3, Giá trị: Java, Python, JavaScript, Mục nhập: 1 = Java, 2 = Python, 3 = JavaScript,

Lưu ý rằng chúng tôi đã sử dụng Map.Entrytrong ví dụ trên. Nó là lớp lồng nhau của Mapgiao diện trả về một khung nhìn (các phần tử) của bản đồ.

Trước tiên, chúng ta cần nhập java.util.Map.Entrygói để sử dụng lớp này.

Lớp lồng nhau này trả về một khung nhìn (các phần tử) của bản đồ.

Tạo HashMap từ các Bản đồ khác

Trong Java, chúng ta cũng có thể tạo một bản đồ băm từ các bản đồ khác. Ví dụ,

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

Đầu ra

 TreeMap: (Four = 4, Two = 2) HashMap: (Two = 2, Three = 3, Four = 4)

Trong ví dụ trên, chúng tôi đã tạo một TreeMaptên evenNumbers. Chú ý biểu thức,

 numbers = new HashMap(evenNumbers)

Ở đây, chúng tôi đang tạo một HashMapsố được đặt tên bằng cách sử dụng TreeMap. Để tìm hiểu thêm về treemap, hãy truy cập Java TreeMap.

Lưu ý : Trong khi tạo một bản đồ băm, chúng ta có thể bao gồm các tham số tùy chọn: dung lượnghệ số tải . Ví dụ,

 HashMap numbers = new HashMap(8, 0.6f);

Đây,

  • 8 (dung lượng là 8) - Điều này có nghĩa là nó có thể lưu trữ 8 mục nhập.
  • 0,6f (hệ số tải là 0,6) - Điều này có nghĩa là bất cứ khi nào bảng băm của chúng ta được lấp đầy 60%, các mục nhập được chuyển sang một bảng băm mới gấp đôi kích thước của bảng băm ban đầu.

Nếu các tham số tùy chọn không được sử dụng, thì dung lượng mặc định sẽ là 16 và hệ số tải mặc định sẽ là 0,75 .

thú vị bài viết...