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à:
HashMap
khô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.TreeMap
duy 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 keyK
và valueV
và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 keyK
với valuev
được chỉ định mới.replace(K, oldValue, newValue)
– Thay thế value của keyK
với value mới lànewValue
nếu keyK
được liên kết với valueoldValue
.remove(K)
– Xóa mục được đại diện bởi keyK
khỏimap
.remove(K, V)
– Xóa mục có keyK
liên kết với valueV
khỏi map.keyset()
– Trả về một tập hợp gồm tất cả cáckey
có 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/value
có 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