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

Mọi người cho thể tham gia khóa học thứ 4 của vietjackteam vào cuối tháng 09/2017 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : Khóa học Java.Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Khóa học cũng đưa 200 câu hỏi phỏng vấn java trên https://www.javatpoint.com/corejava-interview-questions vào nội dung để giúp các bạn dễ dàng vượt qua kì phỏng vấn

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Thông tin khóa học tại Khóa học Java Online trên Udemy

Mọi người có thể xem demo nội dung khóa học tại địa chỉ Video demo khóa học Offline

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

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.


cau_truc_du_lieu_trong_java.jsp

Demo một bài giảng trong khóa học online tại vietjackteam.