1. Dictionary trong Java là gì?

Trong Java, kiểu Dictionary là một cấu trúc dữ liệu lưu trữ các giá trị theo các cặp keyvalue. Kiểu Dictionary trong Java còn được hiểu là từ điển, trong đó với một từ điển (key) sẽ ứng với một giá trị nghĩa (value). Ví dụ như ta có từ điển: “Hello” : “Xin chào” thì trong từ điển đó ta sẽ có key là “Hello”value là “Xin chào”.

Mọi khóa được liên kết với nhiều nhất một giá trị, được thể hiện trong hình dưới đây. Khi giá trị (value) được lưu trữ trong đối tượng Dictionary, chúng ta có thể truy xuất giá trị đó bằng cách gọi đến key của giá trị đó:

Ngôn ngữ lập trình Java đã cung cấp cho chúng ta sẵn một lớp Dictionary để làm việc với cấu trúc dữ liệu theo dạng từ điển (key value). Lớp Dictionary này thuộc trong thư viện java.util và để sử dụng được lớp Dictionary trong thư viện trên ta cần nhập thư viện: import java.util.*;

2. Khai báo Dictionary trong Java

Để sử dụng được cấu trúc Dictionary trong Java, ta chỉ cần khai báo (khởi tạo) một lớp có tên là Dictionary() – lớp này sẽ chỉ có một constructor mặc định duy nhất giúp ta định nghĩa ra kiểu từ điển trong Java.  Mặc định khi được khởi tạo thành công, lớp Dictionary sẽ là một cấu trúc từ điển rỗng.

Chương trình dưới đây, sẽ khởi tạo một Dictionary trong Java bằng cách gọi đến lớp Dictionary() thuộc thư viện java.util và sau khi khởi tạo thành công sẽ là một Dictionary rỗng:

import java.util.*;  
public class Main{  
    public static void main(String args[]){  
        //Tao moi tu dien Dictionary
        Dictionary dict = new Hashtable();  
        //Kiem tra tu dien vua tao co rong khong?
        boolean result = dict.isEmpty();
        System.out.println("Tu dien vua tao co rong khong? " + result); 
        //Kiem tra so luong phan tu cua tu dien 
        System.out.println("So luong phan tu Dictionary: " + dict.size());
        //Hien thi cac phan tu trong tu dien vua tao
        System.out.println("Phan tu cua Dictionary vua tao: " + dict);  
    }  
}

Kết quả:

Tu dien vua tao co rong khong? true
So luong phan tu Dictionary: 0
Phan tu cua Dictionary vua tao: {}

Lưu ý:

  • Lớp Dictionary trong Java là một lớp trừ tượng, lớp này cũng được kế thừa bởi lớp con là Hashtable() vì vậy mà ta hoàn toàn có thể khai báo Dictionary dict = new Hashtable(); để khởi tạo một từ điển trong Java.
  • Lớp Hashtable() kế thừa từ lớp trừu tượng Dictionary(), vì vậy mà lớp này cũng có một vài đặc điểm như lớp cha của nó. Và tất nhiên lớp Hashtable() nó cũng ánh xạ các khóa (key) đến các giá trị (value).

3. Thao tác với Dictionary trong Java

Từ điển thực chất cũng chỉ là một cấu trúc lưu trữ dữ liệu trong Java, khi làm việc với cấu trúc từ điển Dictionary trong Java, chúng ta có thể thực hiện các thao tác như: thêm phần tử vào từ điển (put), lấy ra phần tử trong từ điển (get), xóa phần tử trong từ điển(remove)…

3.1 Thêm phần tử vào Dictionary bằng phương thức Dictionary.put()

Từ điển Dictionary ban đầu được khởi tạo sẽ là một từ điển rỗng, vì vậy mà khi cần làm việc với kiểu cấu trúc từ điển này việc đầu tiên cần làm sẽ là thêm các phần tử vào trong nó.

Như chúng ta đã biết, từ điển Dictionary trong Java được sử dụng để lưu trữ các phần tử theo cặp key : value – điều này nghĩa là ta cần khóa (key)giá trị (value) thì mới cấu tạo nên một phần tử của từ điển. Vì vậy khi thêm một phần tử vào trong từ điển Dictionary ta sẽ cần thêm đồng thời các cặp giá trị key : value để lưu trữ.

Lớp Dictionary đã cung cấp sẵn cho chúng ta phương thức put(key,value) để giúp ta thêm một phần tử vào bên trong một từ điển. Như ví dụ dưới đây, chúng ta sẽ thêm 3 phần tử vào trong từ điển Dictionary thông qua phương thức put(key,value) như sau:

import java.util.*;  
public class Main{  
    public static void main(String args[]){  
        //Tao moi tu dien Dictionary
        Dictionary dict = new Hashtable();  
        //Them phan tu (key, value) vao Dictionary thong qua put()
        dict.put("Hello", "Xin chao");  
        dict.put("Goodbye", "Tam biet");  
        dict.put("Thank you", "Cam on");
        //Kiem tra tu dien rong khong?
        boolean result = dict.isEmpty();
        System.out.println("Tu dien co rong khong? " + result);
        //Kiem tra so luong phan tu cua tu dien
        System.out.println("So luong phan tu Dictionary: " + dict.size());
        //Hien thi cac phan tu trong tu dien 
        System.out.println("Phan tu cua Dictionary: \n" + dict);  
    }  
}

Kết quả:

Tu dien co rong khong? false
So luong phan tu Dictionary: 3
Phan tu cua Dictionary: 
{Thank you=Cam on, Goodbye=Tam biet, Hello=Xin chao}

3.2 Lấy phần tử trong Dictionary bằng phương thức Dictionary.get()

Thao tác lấy ra phần tử trong tử điển Dictionary thực chất là việc lấy ra giá trị (value) của một phần tử trong từ điển dựa theo khóa (key) của phần tử đó. Lưu ý rằng việc lấy ra phần tử trong từ điển sẽ KHÔNG đồng thời xóa đi phần tử đó khỏi từ điển.

Trong lớp Dictionary() đã xây dựng sẵn cho chúng ta phương thức get(key) để lấy ra phần tử trong tử điển Dictionary dựa theo khóa (key) của phần tử cần lấy ra. Như trong ví dụ dưới đây, chúng ta sẽ thêm 3 phần tử vào trong từ điển Dictionary thông qua phương thức put(key,value) sau đó sẽ thực hiện lấy ra 2 phần tử đầu tiên trong tử điển đó bằng phương thức get(key) như sau:

import java.util.*;  
public class Main{  
    public static void main(String args[]){  
        //Tao moi tu dien Dictionary
        Dictionary dict = new Hashtable();  
        //Them phan tu (key, value) vao Dictionary thong qua put()
        dict.put("Hello", "Xin chao");  
        dict.put("Goodbye", "Tam biet");  
        dict.put("Thank you", "Cam on");
        //Hien thi cac phan tu trong tu dien 
        System.out.println("Phan tu cua Dictionary: \n" + dict);
        //Lay ra VALUE cua 2 phan tu dau trong tu dien dua theo KEY
        System.out.println("Value cua 2 phan tu dau la: ");
        // Key: Hello => Value: Xin chao
        System.out.println(dict.get("Hello"));
        // Key: Goodbye => Value: Tam biet
        System.out.println(dict.get("Goodbye"));
    }  
}

Kết quả:

Phan tu cua Dictionary: 
{Thank you=Cam on, Goodbye=Tam biet, Hello=Xin chao}
Value cua 2 phan tu dau la: 
Xin chao
Tam biet

3.3 Xóa phần tử trong Dictionary bằng phương thức Dictionary.remove()

Để xóa đi một phần tử trong từ điển Dictionary, khi đó ta cần phải có khóa (key) của phần tử cần xóa. Thực hiện xóa phần tử trong Dictionary sẽ xóa bỏ đi cả giá trị keyvalue của phần tử đó.

Để xóa đi một phần tử trong lớp Dictionary(), chúng ta có thể gọi đến phương thức remove(key) – phương thức này đã được tích hợp sẵn trong lớp Dictionary() và nó yêu cầu nhập vào key của phần tử cần xóa. Như trong ví dụ dưới đây, chúng ta sẽ thêm 3 phần tử vào trong từ điển Dictionary thông qua phương thức put(key,value) sau đó sẽ thực hiện xóa đi 2 phần tử đầu tiên trong từ điển thông qua phương thức remove(key) như sau:

import java.util.*;  
public class Main{  
    public static void main(String args[]){  
        //Tao moi tu dien Dictionary
        Dictionary dict = new Hashtable();  
        //Them phan tu (key, value) vao Dictionary thong qua put()
        dict.put("Hello", "Xin chao");  
        dict.put("Goodbye", "Tam biet");  
        dict.put("Thank you", "Cam on");
        
        //Kiem tra so luong phan tu cua tu dien 
        System.out.println("So luong phan tu Dictionary: " + dict.size());
        //Hien thi cac phan tu trong tu dien 
        System.out.println("Phan tu cua Dictionary ban dau: \n" + dict);
        
        //Xoa 2 phan tu dau tien trong tu dien dua theo KEY
        dict.remove("Hello"); //Xoa theo key: Hello
        dict.remove("Goodbye"); //Xoa theo key: Goodbye
        
        //Kiem tra so luong phan tu cua tu dien sau khi xoa 2 phan tu
        System.out.println("So luong phan tu Dictionary sau khi xoa: " + dict.size());
        //Hien thi cac phan tu trong tu dien sau khi xoa
        System.out.println("Phan tu cua Dictionary sau khi xoa: \n" + dict);
    }  
}

Kết quả:

So luong phan tu Dictionary: 3
Phan tu cua Dictionary ban dau: 
{Thank you=Cam on, Goodbye=Tam biet, Hello=Xin chao}
So luong phan tu Dictionary sau khi xoa: 1
Phan tu cua Dictionary sau khi xoa: 
{Thank you=Cam on}

4. Các phương thức của Dictionary trong Java

Trong các ví dụ trên, chúng ta đã cùng nhau sử dụng các phương thức phổ biến khi thao tác thêm phần tử vào Dictionary, lấy ra phần tử trong Dictionary, xóa phần tử trong Dictionarycác phương thức đã được sử dụng đó là: put(), get(), remove(), size(), isEmpty()…. tuy nhiên, vẫn còn một vài phương thức nữa được liệt kê dưới đây để các bạn sử dụng chúng trong khi làm việc với Dictionary trong Java:

Lưu ý: Tất cả các phương thức của lớp Dictionary đều là các phương thức trừu tượng.

Phương thức Mô tả
Enumeration elements() Lấy ra tất cả các giá trị VALUE trong Dictionary
Object get(Object key) Lấy ra một phần tử trong Dictionary dựa theo KEY
boolean isEmpty() Kiểm tra Dictionary có rỗng hay không?
Enumeration keys() Lấy ra tất cả các giá trị KEY trong Dictionary
Object put(Object key, Object value) Thêm mới phần tử vào trong Dictionary, phần tử thêm mới là một cặp giá trị gồm (KEY,VALUE)
Object remove(Object key) Xóa phần tử khỏi Dictionary dựa vào KEY của phần tử cần xóa
int size() Kiểm tra số lượng phần tử có trong Dictionary