Table of Contents
1. Giới thiệu
Lớp Java Hashtable cài đặt (implement) một bảng hashtable để map khóa và giá trị. Hashtable kế thừa lớp Dictionary và cài đặt (implement) Map Interface.
Các đặc điểm quan trọng về lớp Hashtable trong java là:
- Hashtable là một mảng của list. Mỗi list được biết đến như một bucket (vùng chứa) các phần tử. Ví trí của một bucket được xác định bằng việc gọi phương thức hashcode(). Hashtable cũng lưu trữ dữ liệu dưới dạng cặp key và value.
- Hashtable chứa các key duy nhất.
- Hashtable KHÔNG thể có bất kỳ key hoặc giá trị nào là null.
- Hashtable được đồng bộ (synchronized).
2. Hierarchy của lớp Hashtable
Lớp java.util.Hashtable được định nghĩa như sau:
public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable { }
Trong đó:
- K: đây là kiểu key để lưu trữ.
- V: đây là kiểu giá trị được ánh xạ.
3. Các phương thức khởi tạo (constructor) của lớp Hashtable
- Hashtable(): khởi tạo một hashtable trống, sức chứa (capacity) ban đầu mặc định là 11.
- Hashtable(Map<? extends K, ? extends V> t): khởi tạo một hashtable với các phần tử của map t.
- Hashtable(int initialCapacity): khởi tạo một hashtable trống, với sức chứa (capacity) ban đầu được xác định.
4. Các phương thức (method) của lớp Hashtable
Xem thêm các phương thức của Map ở bài viết Map Interface trong java.
5. Ví dụ minh họa
5.1. Ví dụ sử dụng Hashtable với kiểu dữ liệu cơ bản (Wrapper)
package com.maixuanviet.collection.map.hashtable; import java.util.Hashtable; import java.util.Map.Entry; public class HashTableExample { public static void main(String args[]) { // init Hashtable Hashtable<Integer, String> hashTable = new Hashtable<Integer, String>(); hashTable.put(1, "Basic java"); hashTable.put(2, "OOP"); hashTable.put(3, "Collection"); // show Hashtable using method keySet() for (Integer key : hashTable.keySet()) { String value = hashTable.get(key); System.out.println(key + " = " + value); } System.out.println("---"); // show map using method keySet() for (Entry<Integer, String> entry : hashTable.entrySet()) { Integer key = entry.getKey(); String value = entry.getValue(); System.out.println(key + " = " + value); } } }
Kết quả thực thi chương trình trên:
3 = Collection 2 = OOP 1 = Basic java --- 3 = Collection 2 = OOP 1 = Basic java
5.2. Ví dụ sử dụng Hashtable với kiểu do người dùng tự định nghĩa (Object)
import java.util.HashSet; import java.util.Set; class Student { private int id; private String name; public Student(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + "]"; } } public class HashTableExample2 { public static void main(String args[]) { // Student's data Student student1 = new Student(1, "Student 1"); Student student2 = new Student(2, "Student 2"); Student student3 = new Student(3, "Student 3"); // init Hashtable Hashtable<Integer, Student> hashTable = new Hashtable<Integer, Student>(); hashTable.put(student1.getId(), student1); hashTable.put(student2.getId(), student2); hashTable.put(student3.getId(), student3); // show Hashtable using method keySet() for (Integer key : hashTable.keySet()) { Student value = hashTable.get(key); System.out.println(key + " = " + value); } System.out.println("---"); // show Hashtable using method keySet() for (Entry<Integer, Student> entry : hashTable.entrySet()) { Integer key = entry.getKey(); Student value = entry.getValue(); System.out.println(key + " = " + value); } } }
Kết quả thực thi chương trình trên:
3 = Student [id=3, name=Student 3] 2 = Student [id=2, name=Student 2] 1 = Student [id=1, name=Student 1] --- 3 = Student [id=3, name=Student 3] 2 = Student [id=2, name=Student 2] 1 = Student [id=1, name=Student 1] <span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>
Related posts:
Generic Constructors in Java
Java Program to Decode a Message Encoded Using Playfair Cipher
Converting String to Stream of chars
Các kiểu dữ liệu trong java
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
String Initialization in Java
A Guide to Java 9 Modularity
Jackson – Change Name of Field
Introduction to Spring Data JDBC
An Intro to Spring Cloud Contract
Unsatisfied Dependency in Spring
Guide to the Java Queue Interface
LIKE Queries in Spring JPA Repositories
Lập trình đa luồng với Callable và Future trong Java
An Intro to Spring Cloud Vault
Check If Two Lists are Equal in Java
Java Program to Implement Rope
Apache Commons Collections BidiMap
Sorting in Java
Java Program to Implement Quick Sort with Given Complexity Constraint
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation
Java 8 Predicate Chain
Spring 5 Functional Bean Registration
JUnit 5 for Kotlin Developers
Hướng dẫn sử dụng String Format trong Java
Spring Security Custom AuthenticationFailureHandler
Java Program to Construct an Expression Tree for an Prefix Expression
Exploring the New Spring Cloud Gateway
Java Program to Represent Graph Using Incidence List
Test a REST API with Java
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Create a Custom Exception in Java