HashTable là một thành phần trong collection framework thừa kế Dictionary. Tuy nhiên về sau nó đã được thiết kế lại ngoài việc thừa kế Dictionary thì nó còn triển khai Map interface. Đó là lý do nó hoạt động tương tự như HashMap chỉ khác điểm duy nhất là nó được đồng bộ hoá.
HashTable lưu trữ các cặp key-value trong một hash table. Khi sử dụng HashTable chúng ta có thể sử dụng một object làm key. Key sẽ được sử dụng làm đầu vào cho các thuật toán Hash và trả về kết quả sẽ được dùng làm index cho các giá trị trong table.
Đồng bộ hoá, không đồng bộ hoá nghĩa là sao?
- HashMap không đồng bộ hoá vì thế trong môi trường đa luồng tại một thời điểm có thể nhiều hơn 1 thread truy xuất và xử lý trên một HashMap.
- HashTable đồng bộ hoá nên nó đảm bảo tại một thời điểm chỉ có duy nhất một thread được truy cập và xử lý trên nó.
import java.util.*; public class HashTableDemo { public static void main(String args[]) { // Create a hash map Hashtable balance = new Hashtable(); Enumeration names; String str; double bal; balance.put("Zara", new Double(3434.34)); balance.put("Mahnaz", new Double(123.22)); balance.put("Ayan", new Double(1378.00)); balance.put("Daisy", new Double(99.22)); balance.put("Qadir", new Double(-19.08)); // Show all balances in hash table. names = balance.keys(); while(names.hasMoreElements()) { str = (String) names.nextElement(); System.out.println(str + ": " + balance.get(str)); } System.out.println(); // Deposit 1,000 into Zara's account bal = ((Double)balance.get("Zara")).doubleValue(); balance.put("Zara", new Double(bal + 1000)); System.out.println("Zara's new balance: " + balance.get("Zara")); } }
Output
Qadir: -19.08 Zara: 3434.34 Mahnaz: 123.22 Daisy: 99.22 Ayan: 1378.0 Zara's new balance: 4434.34
Nguồn tham khảo
https://www.geeksforgeeks.org/hashtable-in-java/
https://www.tutorialspoint.com/java/java_hashtable_class.htm