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 HashMap
lớ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 HashMap
lớp cài đặt giao diện bản đồ.
![](https://cdn.wiki-base.com/7339188/java_hashmap_with_examples.png.webp)
Tạo HashMap
Để tạo một bản đồ băm, java.util.HashMap
trướ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ím là String
và loại giá trị là 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 HashMap
ngô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 HashMap
lớ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 HashMap
lớ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 HashMap
số đượ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 String
giá trị One làm khóa và Integer
giá 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()
và 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 HashMap
lớ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 Hashmap có 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 Hashmap có 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.Entry
trong ví dụ trên. Nó là lớp lồng nhau của Map
giao 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.Entry
gó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 TreeMap
tên evenNumbers
. Chú ý biểu thức,
numbers = new HashMap(evenNumbers)
Ở đây, chúng tôi đang tạo một HashMap
số đượ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ượng và hệ 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 .