Map trong Java là gì?
Trong java, map được sử dụng để lưu trữ và truy xuất dữ liệu theo cặp khóa (key) và giá trị (value). Mỗi cặp key và value được gọi là entry.
Map chỉ chứa các giá trị key duy nhất, không chứa các key trùng lặp.

Các lớp cài đặt (implements) Map interface là:
HashMapkhông đảm bảo thứ tự các entry được thêm vào.LinkedHashMapđảm bảo thứ tự các entry được thêm vào.TreeMapduy trình thứ tự các phần tử dựa vào bộ so sánh Comparator.EnumMap- WeakHashMap
- TreeMap

Sức chứa (capacity) mặc định khi khởi tạo map là 2^4 = 16. Kích thước này sẽ tự động tăng gấp đôi mỗi khi thêm phần tử vượt quá kích thước của nó.
Sử dụng Map trong Java
Trong Java, chúng ta phải import gói java.util.Map để sử dụng Map. Khi chúng ta đã import gói, sau đây là cách chúng ta có thể tạo map.
java
// Map implementation using HashMap
Map<Key, Value> numbers = new HashMap<>();
Trong đoạn code trên, chúng ta đã tạo ra một Map tên là numbers. Chúng ta đã sử dụng class HashMap để triển khai Map interface. Ở đây:
Key– Code định danh duy nhất được sử dụng để liên kết từng phần tử (value) trong mapValue– các phần tử được liên kết bởi các key trong map
Các hàm của Map trong Java
put (K, V)– Chèn liên kết của keyKvà valueVvàomap. Nếu key đã có sẵn, value mới sẽ thay thế value cũ.putAll()– Chèn tất cả các mục từ map đã chỉ định vào map hiện tại.putIfAbsent (K,V)– Chèn liên kết nếu key K chưa được liên kết với valueV.get(K)– Trả về value được liên kết với key K được chỉ định. Nếu không tìm thấykey, nó sẽ trả vềnull.getOrDefault(K, defaultValue)– Trả về value được liên kết với keykđược chỉ định. Nếu không tìm thấy key, nó sẽ trả về value mặc định.containsKey(K)– Kiểm tra xem key được chỉ địnhKđã có trong map chưa.containsValue(V)– Kiểm tra xem valuevđược chỉ định đã có trong map chưa.replace(K, V)– Thay thế value của keyKvới valuevđược chỉ định mới.replace(K, oldValue, newValue)– Thay thế value của keyKvới value mới lànewValuenếu keyKđược liên kết với valueoldValue.remove(K)– Xóa mục được đại diện bởi keyKkhỏimap.remove(K, V)– Xóa mục có keyKliên kết với valueVkhỏi map.keyset()– Trả về một tập hợp gồm tất cả cáckeycó trong map.value()– Trả về tập hợp tất gồm cả các value có trong map.entryset()– Trả về tập hợp gồm tất cả cặpkey/valuecó trong map.
java
package com.gpcoder.collection.map;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class MapExample {
public static void main(String args[]) {
// init map
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "Basic java");
map.put(2, "OOP");
map.put(3, "Collection");
// show map using method keySet()
for (Integer key : map.keySet()) {
String value = map.get(key);
System.out.println(key + " = " + value);
}
System.out.println("---");
// show map using method keySet()
for (Entry<Integer, String> entry : map.entrySet()) {
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key + " = " + value);
}
}
}
Kết quả
1 = Basic java
2 = OOP
3 = Collection
1 = Basic java
2 = OOP
3 = Collection