Trong lập trình Java, HashMap
là một lớp trong cấu trúc dữ liệu Map. Nó triển khai giao diện Map
và được sử dụng để lưu trữ các cặp key-value, trong đó mỗi key là duy nhất và không trùng lặp.
HashMap
dựa trên cơ chế băm (hashing) để lưu trữ và truy xuất các phần tử. Do đó, việc thêm, truy xuất và xóa phần tử trong HashMap
có độ phức tạp là O(1) trung bình (trường hợp tốt), tuy nhiên, trong một số trường hợp tồi nhất, có thể là O(n) nếu xảy ra va chạm (collision) nhiều.
Điểm nổi bật của HashMap
là tốc độ truy xuất nhanh và khả năng lưu trữ một số lượng lớn phần tử.
Dưới đây là cách tạo và sử dụng HashMap
trong Java:
- Khởi tạo một đối tượng
HashMap
trống:
java
import java.util.HashMap;
HashMap<String, Integer> hashMap = new HashMap<>();
Trong ví dụ trên, String
là kiểu dữ liệu của key và Integer
là kiểu dữ liệu của value.
- Thêm phần tử vào
HashMap
:
java
hashMap.put("apple", 5);
hashMap.put("banana", 3);
hashMap.put("orange", 7);
- Truy xuất giá trị thông qua key:
java
int numberOfApples = hashMap.get("apple"); // numberOfApples sẽ là 5
- Duyệt qua các cặp key-value trong
HashMap
:
java
for (String key : hashMap.keySet()) {
int value = hashMap.get(key);
System.out.println(key + ": " + value);
}
Kết quả đầu ra sẽ là:
makefile
apple: 5
banana: 3
orange: 7
Một số điểm cần lưu ý về HashMap
:
HashMap
cho phép key có giá trịnull
, nhưng chỉ cho phép một keynull
duy nhất (nếu thêm nhiều keynull
, key cuối cùng sẽ ghi đè lên các keynull
trước đó).HashMap
cho phép value có giá trịnull
.HashMap
không đồng bộ (non-synchronized). Nếu bạn cần sử dụng nó trong môi trường đa luồng (multi-threading), bạn nên thêm đồng bộ hóa để đảm bảo tính toàn vẹn dữ liệu.- Nếu bạn cần duyệt qua
HashMap
theo thứ tự cụ thể, bạn có thể sử dụng lớpLinkedHashMap
thay vìHashMap
, nó sẽ giữ thứ tự chèn của các cặp key-value.