Trong lập trình Java, Dictionary
là một lớp trừu tượng từ phiên bản JDK 1.2. Mặc dù nó là một lớp trừu tượng, nhưng Java không cung cấp một lớp cụ thể để triển khai Dictionary
, thay vào đó, Java cung cấp hai lớp cụ thể để triển khai các cấu trúc dữ liệu từ điển (dictionary) là Hashtable
và HashMap
.
Dictionary
định nghĩa một cấu trúc dữ liệu chứa các cặp key-value, trong đó key là duy nhất và không có các key trùng lặp. Bạn có thể thêm, lấy và xóa các phần tử từ từ điển bằng cách sử dụng key như một chỉ mục.
Dưới đây là các phương thức chính của lớp Dictionary
:
void put(Object key, Object value)
: Thêm một cặp key-value vào từ điển.Object get(Object key)
: Lấy giá trị tương ứng với key từ từ điển.void remove(Object key)
: Xóa cặp key-value có key tương ứng từ từ điển.Enumeration keys()
: Trả về một Enumeration chứa các key của từ điển.Enumeration elements()
: Trả về một Enumeration chứa các value của từ điển.
Dưới đây là ví dụ về cách sử dụng lớp Hashtable
để triển khai cấu trúc dữ liệu từ điển:
java
import java.util.Hashtable;
import java.util.Enumeration;
public class DictionaryExample {
public static void main(String[] args) {
Hashtable<String, Integer> scores = new Hashtable<>();
// Thêm các cặp key-value vào từ điển
scores.put("Alice", 90);
scores.put("Bob", 85);
scores.put("Charlie", 95);
// Lấy giá trị tương ứng với key
int aliceScore = scores.get("Alice");
System.out.println("Alice's score: " + aliceScore); // Output: Alice's score: 90
// Xóa một cặp key-value từ từ điển
scores.remove("Bob");
// In ra danh sách key của từ điển
Enumeration<String> keys = scores.keys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
System.out.println("Key: " + key + ", Value: " + scores.get(key));
}
/* Output:
Key: Charlie, Value: 95
Key: Alice, Value: 90
*/
}
}
Lưu ý rằng từ phiên bản JDK 1.2, Java khuyến khích sử dụng HashMap
thay thế cho Hashtable
vì HashMap
không đồng bộ (non-synchronized) nên cung cấp hiệu suất tốt hơn khi chỉ có một luồng thực thi. Tuy nhiên, nếu bạn cần một từ điển đồng bộ trong môi trường đa luồng, bạn có thể sử dụng Hashtable
hoặc sử dụng các phương thức tạo bản đồ đồng bộ bằng Collections.synchronizedMap()
để đóng gói HashMap
thành một đối tượng đồng bộ.