Java: Hashtable

Lớp Hashtable thực thi interface Map nhưng lưu trữ các phần tử như một cặp key/value trong bảng băm. Trong khi sử dụng Hashtable, một khóa được chỉ định để liên kết một giá trị. Khóa được băm và sau đó mã băm được sử dụng làm chỉ mục tại đó giá trị được lưu trữ. Lớp kế thừa tất cả các phương thức của interface Map. Để truy xuất và lưu trữ các đối tượng từ bảng băm thành công, các đối tượng được sử dụng làm khóa phải triển khai phương thức hashCode() và equals().

Các hàm tạo của lớp Hashtable như sau:

Hashtable(): Hàm tạo xây dựng một bảng băm mới, trống.

Hashtable(int initCap): Hàm tạo xây dựng một bảng băm mới, trống với dung lượng ban đầu được chỉ định.

Hashtable(int intCap, float fillRatio): Hàm tạo xây dựng một bảng băm mới, trống với công suất và hệ số tải ban đầu được chỉ định.

Hashtable(Map<? extends K,? extends V> m): Hàm tạo xây dựng một bảng băm mới chứa các mục nhập giống như Map đã cho.

Ví dụ sau thể hiện việc sử dụng lớp Hashtable.

Hashtable<

String

,

String

>

bookHash

=

new

Hashtable<

String

,

String

>(); bookHash.put(

"115-355N"

,

"A Guide to Advanced Java"

); bookHash.put(

"116-455A"

,

"Learn Java by Example"

); bookHash.put(

"116-466B"

,

"Introduction to Solaris"

); String str = (String) bookHash.get(

"116-455A"

); System.out.println(

"Detail of a book "

+ str); System.out.println(

"Is table empty "

+ bookHash.isEmpty()); System.out.println(

"Does table contains key? "

+ bookHash.containsKey(

"116- 466B"

)); Enumeration name = bookHash.keys();

while

(name.hasMoreElements()){ String bkCode = (String)name.nextElement(); System.out.println( bkCode +

": "

+ (String)bookHash.get(bkCode)); }

Trong ví dụ trên, phương thức put() và get() được sử dụng để chèn và truy xuất các giá trị từ hashtable. Phương thức isEmpty() kiểm tra xem hashtable có trống hay không và phương thức containsKey() được sử dụng để kiểm tra xem một key cụ thể có tồn tại hay không.

Để có được tất cả các chi tiết của book, một đối tượng Enumeration được sử dụng. Các khóa được truy xuất bằng cách sử dụng phương thức nextElement() của interface Enumeration và sau đó sử dụng các khóa, giá trị được liên kết với mỗi khóa sẽ được truy xuất.

Lưu ý – Interface Enumeration trả về một chuỗi phần tử và gọi phương thức nextElement() trả về phần tử có trong chuỗi một cách lần lượt.