trong lập trình Java, Lớp Hashtable
là một lớp trong gói java.util
trong Java, và nó được sử dụng để triển khai cấu trúc dữ liệu từ điển (dictionary). Tương tự như HashMap
, Hashtable
cũng triển khai giao diện Map
, và nó chứa các cặp key-value duy nhất, trong đó key là không thể trùng lặp.
Một điểm khác biệt chính giữa Hashtable
và HashMap
là Hashtable
là một lớp đồng bộ (synchronized), điều này làm cho nó an toàn khi sử dụng trong môi trường đa luồng (multi-threaded). Điều này có nghĩa là nhiều luồng có thể truy cập và sửa đổi Hashtable
cùng một lúc mà không gây ra các lỗi đồng thời (concurrency issues).
Dưới đây là một số phương thức quan trọng của lớp Hashtable
:
void put(K key, V value)
: Thêm một cặp key-value vàoHashtable
.V get(Object key)
: Lấy giá trị tương ứng vớikey
từHashtable
.V remove(Object key)
: Xóa cặp key-value cókey
tương ứng khỏiHashtable
.boolean containsKey(Object key)
: Kiểm tra xemHashtable
có chứakey
hay không.boolean containsValue(Object value)
: Kiểm tra xemHashtable
có chứavalue
hay không.int size()
: Trả về số lượng phần tử trongHashtable
.boolean isEmpty()
: Kiểm tra xemHashtable
có rỗng không.Enumeration<K> keys()
: Trả về mộtEnumeration
chứa cáckey
củaHashtable
.Enumeration<V> elements()
: Trả về mộtEnumeration
chứa cácvalue
củaHashtable
.
Dưới đây là ví dụ về cách sử dụng lớp Hashtable
:
java
import java.util.Hashtable;
import java.util.Enumeration;
public class HashtableExample {
public static void main(String[] args) {
Hashtable<String, Integer> scores = new Hashtable<>();
// Thêm các cặp key-value vào Hashtable
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ừ Hashtable
scores.remove("Bob");
// Kiểm tra sự tồn tại của key và value trong Hashtable
System.out.println("Contains key 'Bob': " + scores.containsKey("Bob")); // Output: Contains key 'Bob': false
System.out.println("Contains value 95: " + scores.containsValue(95)); // Output: Contains value 95: true
// In ra danh sách key và value của Hashtable
Enumeration<String> keys = scores.keys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
int value = scores.get(key);
System.out.println("Key: " + key + ", Value: " + value);
}
/* Output:
Key: Alice, Value: 90
Key: Charlie, Value: 95
*/
}
}
Lớp Hashtable
hữu ích khi bạn cần triển khai một từ điển đồng bộ (safe for use in multi-threaded environments) trong ứng dụng của mình. Tuy nhiên, trong các ứng dụng hiện đại, thường nên sử dụng HashMap
thay thế cho Hashtable
nếu không có yêu cầu đặc biệt về đồng bộ hóa.