Trong lập trình Java, TreeMap
là một lớp trong cấu trúc dữ liệu Map. Nó triển khai giao diện NavigableMap
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.
TreeMap
duy trì các phần tử theo thứ tự tự nhiên của key, được sắp xếp theo thứ tự tăng dần hoặc giảm dần (phụ thuộc vào trình tự so sánh của key).
TreeMap
sử dụng cơ chế cây đỏ-đen (red-black tree) để duy trì các phần tử, giúp đảm bảo thời gian truy xuất, thêm, xóa phần tử trong TreeMap
là O(log n), nơi n là số lượng phần tử trong TreeMap
.
Dưới đây là cách tạo và sử dụng TreeMap
trong Java:
- Khởi tạo một đối tượng
TreeMap
trống:
java
import java.util.TreeMap;
TreeMap<String, Integer> treeMap = new TreeMap<>();
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
TreeMap
:
java
treeMap.put("apple", 5);
treeMap.put("banana", 3);
treeMap.put("orange", 7);
- Truy xuất giá trị thông qua key:
java
int numberOfApples = treeMap.get("apple"); // numberOfApples sẽ là 5
- Duyệt qua các cặp key-value trong
TreeMap
:
java
for (String key : treeMap.keySet()) {
int value = treeMap.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ề TreeMap
:
TreeMap
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 đó).TreeMap
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
TreeMap
theo thứ tự chèn (thứ tự thêm vào) hoặc thứ tự tự nhiên của các phần tử, bạn có thể sử dụng lớpLinkedHashMap
hoặcTreeMap
với bộ so sánh (Comparator) phù hợp.