Lớp Hashtable trong Java
Lớp Hashtable trong Java là một phần của java.util gốc và là một sự triển khai cụ thể của một Dictionary.
Tuy nhiên, Java 2 đã thiết kế lại Hashtable để nó cũng triển khai Map Interface. Vì thế, lớp Hashtable bây giờ được tích hợp vào trong Collection Framework. Nó tương tự như HashMap, nhưng nó được đồng bộ.
Giống như HashMap, lớp Hashtable lưu giữ các cặp key/value trong một hash table. Khi sử dụng một Hashtable, bạn xác định một đối tượng mà được sử dụng như là một key, và value mà bạn muốn liên kết tới key đó. Key này sau đó được hash, và hash code kết quả được sử dụng như là chỉ mục, tại đó value được lưu giữ bên trong table đó.
Để hiểu sâu hơn các khái niệm được trình bày trong chương này, mời bạn tham khảo loạt bài: Ví dụ về Cấu trúc dữ liệu (Data Structure) trong Java.
Lớp Hashtable định nghĩa 4 constructor. Phiên bản đầu tiên là constructor mặc định:
Hashtable( )
Phiên bản thứ hai tạo một Hashtable mà có kích cỡ khởi tạo được xác định bởi size:
Hashtable(int size)
Phiên bản thứ ba tạo một Hashtable mà có kích cỡ khởi tạo được xác định bởi size và một fill ratio được xác định bởi fillRatio:
Ratio này phải nằm giữa 0.0 và 1.0, và nó quyết định độ full của hash table trước khi nó được resize.
Hashtable(int size, float fillRatio)
Phiên bản thứ tư tạo một Hashtable mà mà được khởi tạo với các phần tử trong m.
Dung lượng của Hash table đó được thiết lập là gấp hai lần số phần tử trong m. Hệ số tải (load factor) là 0.75 được sử dụng.
Hashtable(Map m)
Ngoài những phương thức được định nghĩa bởi Map Interface, lớp Hashtable trong định nghĩa các phương thức sau:
STT | Phương thức và Miêu tả |
---|---|
1 | void clear( )
Reset và làm trống hash table |
2 | Object clone( )
Trả về một bản sao của đối tượng đang gọi |
3 | boolean contains(Object value)
Trả về true nếu value cân bằng với value tồn tại bên trong hash table. Trả về false nếu value đó không được tìm thấy |
4 | boolean containsKey(Object key)
Trả về true nếu key cân bằng với key tồn tại bên trong hash table. Trả về false nếu key đó không được tìm thấy |
5 | boolean containsValue(Object value)
Trả về true nếu value cân bằng với value tồn tại bên trong hash table. Trả về false nếu value đó không được tìm thấy |
6 | Enumeration elements( )
Trả về một bản liệt kê các value được chứa trong hash table |
7 | Object get(Object key)
Trả về đối tượng mà chứa value mà liên kết với key. Nếu key không có trong hash table, một đối tượng null được trả về |
8 | boolean isEmpty( )
Trả về true nếu hash table là trống; nếu nó chứa ít nhất một key thì trả về false |
9 | Enumeration keys( )
Trả về một bản liệt kê các key được chứa trong hash table |
10 | Object put(Object key, Object value)
Chèn một key và một value vào trong hash table. Trả về null nếu key đã không có trong hash table; trả về value trước mà liên kết với key nếu key đã có trong hash table |
11 | void rehash( )
Tăng kích cỡ của hash table và làm lại mới tất cả các key của nó |
12 | Object remove(Object key)
Gỡ bỏ key và value của nó. Trả về value mà liên kết với key. Nếu key không có trong hash table, một đối tượng null được trả về |
13 | int size( )
Trả về số entry trong hash table |
14 | String toString( )
Trả về biểu diễn chuỗi tương đương của một hash table |
Ví dụ
Chương trình sau minh họa một số phương thức được hỗ trợ bởi lớp Hashtable trong Java:
import java.util.*; public class HashTableDemo { public static void main(String args[]) { // tao mot 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)); // Hien thi tat ca balance trong hash table. names = balance.keys(); while(names.hasMoreElements()) { str = (String) names.nextElement(); System.out.println(str + ": " + balance.get(str)); } System.out.println(); // Gui 1,000 vao tai khoan cua Zara bal = ((Double)balance.get("Zara")).doubleValue(); balance.put("Zara", new Double(bal+1000)); System.out.println("Balance moi cua Zara la: " + balance.get("Zara")); } }
Nó sẽ cho kết quả sau:
Qadir: -19.08 Zara: 3434.34 Mahnaz: 123.22 Daisy: 99.22 Ayan: 1378.0 Balance moi cua Zara la: 4434.34
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập doanh nghiệp với Java. Khóa học có giá chỉ 400K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp chị Thu, trợ lý anh Tuyền để hỗ trợ thanh toán qua mã QR ngân hàng Việt Nam, fb: https://www.facebook.com/Thule.59
Anh Tuyền, tác giả khóa học, là cựu sinh viên chương trình đào tạo kĩ sư tài năng của đại học Bách Khoa Hà Nội với hơn 5 năm kinh nghiệm đi làm thực tế doanh nghiệp và cũng là Founder website vietjack.com, web giáo dục phổ biến nhất Việt Nam hiện tại (năm 2024). Java cũng là ngôn ngữ lập trình dễ đi xin việc nhất hiện tại, với mức lương cao, hãy nâng cao kiến thức IT của bản thân mình vì một Việt Nam giàu mạnh.
Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com
Bài học Java phổ biến tại vietjack.com: