Trong bài viết này, chúng ta sẽ cùng tìm hiểu về NavigableMap Interface trong Java và các phương thức của nó cùng với sự trợ giúp của ví dụ dẫn chứng.
NavigableMap Interface trong Java
NavigableMap Interface cung cấp các tính năng để điều hướng giữa các bản ghi của Map. Nó được coi là một kiểu loại SortedMap.
Lớp triển khai NavigableMap
Vì NavigableMap là một Interface nên chúng ta không thể tạo các đối tượng từ nó. Để sử dụng các chức năng của NavigableMap Interface, chúng ta cần sử dụng lớp TreeMap để thực hiện việc triển khai NavigableMap.
Làm thế nào để sử dụng NavigableMap?
Trong Java, chúng ta phải thêm gói package java.util.NavigableMap để sử dụng NavigableMap. Và sau đây là cách chúng ta có thể tạo một NavigableMap.
1 |
NavigableMap<Khóa, Giá trị> a = new TreeMap<>(); |
Trong đoạn mã trên, chúng ta đã tạo một NavigableMap có tên là a của lớp TreeMap.
Trong đó:
- Khóa là một định danh duy nhất được sử dụng để liên kết từng phần tử (giá trị) trong Map.
- Giá trị các phần tử được liên kết bởi các khóa trong Map.
Các phương thức của NavigableMap
NavigableMap được coi là một loại SortedMap. Đó là bởi vì NavigableMap kế thừa SortedMap. Do đó, tất cả các phương thức SortedMap cũng có sẵn trong NavigableMap. Để tìm hiểu cách các phương thức này được định nghĩa trong SortedMap, các bạn có thể xem lại bài trước về SortedMap trong Java.
Tuy nhiên, một số phương thức của SortedMap bao gồm headMap(), tailMap() và subMap() được định nghĩa khác trong NavigableMap.
1. Phương thức headMap (khóa, giá trị kiểu boolean)
Phương thức headMap() trả về tất cả các bản ghi của một NavigableMap được liên kết với tất cả các khóa trước khóa được chỉ định (được truyền dưới dạng đối số).
Giá trị kiểu boolean là một tham số tùy chọn. Giá trị mặc định của nó là false. Nếu true được truyền cho tham số này, phương thức trả về tất cả các bản ghi được liên kết với tất cả các khóa trước khóa được chỉ định, bao gồm cả bản ghi được liên kết với khóa đã chỉ định.
2. Phương thức tailMap (khóa, giá trị kiểu boolean)
Phương thức tailMap() trả về tất cả các bản ghi của một NavigableMap được liên kết với tất cả các khóa sau khóa được chỉ định (được truyền dưới dạng đối số) bao gồm bản ghi được liên kết với khóa được chỉ định.
Giá trị kiểu boolean là một tham số tùy chọn. Giá trị mặc định của nó là true. Nếu false được truyền cho tham số này, phương thức sẽ trả về tất cả các bản ghi được liên kết với các khóa sau khóa được chỉ định, không bao gồm bản ghi được liên kết với khóa đã chỉ định.
3. Phương thức subMap (k1, bv1, k2, bv2)
Phương thức subMap() trả về tất cả các bản ghi được liên kết với các khóa giữa k1 và k2 bao gồm cả bản ghi được liên kết với k1.
bv1 và bv2 là các tham số tùy chọn. Giá trị mặc định của bv1 là true và giá trị mặc định của bv2 là false. Nếu false được truyền cho bv1, phương thức này trả về tất cả các bản ghi được liên kết với các khóa giữa k1 và k2, không bao gồm bản ghi được liên kết với k1.
Nếu true được truyền cho bv2, phương thức trả về tất cả các bản ghi được liên kết với các khóa giữa k1 và k2, bao gồm cả bản ghi được liên kết với k1.
4. Các phương thức khác
NavigableMap cung cấp nhiều phương pháp khác nhau có thể được sử dụng để tìm kiếm các bản ghi của Map.
- Phương thức descendingMap(): Đảo ngược thứ tự các bản ghi trong Map.
- Phương thức descendingKeyMap(): Đảo ngược thứ tự các khóa trong Map.
- Phương thức ceilingEntry(): Trả về bản ghi có khóa thấp nhất trong số tất cả các bản ghi có khóa lớn hơn hoặc bằng khóa được chỉ định.
- Phương thức ceilingKey(): Trả về khóa thấp nhất trong số các khóa lớn hơn hoặc bằng khóa được chỉ định.
- Phương thức floorEntry(): Trả về một bản ghi có khóa cao nhất trong số tất cả các bản ghi có khóa nhỏ hơn hoặc bằng khóa được chỉ định.
- Phương thức floorKey(): Trả về khóa cao nhất trong số các khóa nhỏ hơn hoặc bằng khóa được chỉ định.
- Phương thức highEntry(): Trả về một bản ghi có khóa thấp nhất trong số tất cả các bản ghi có khóa lớn hơn khóa được chỉ định.
- Phương thức highKey(): Trả về khóa thấp nhất trong số các khóa lớn hơn khóa được chỉ định.
- Phương thức lowEntry(): Trả về một bản ghi có khóa cao nhất trong số tất cả các bản ghi có khóa nhỏ hơn khóa được chỉ định.
- Phương thức lowKey(): Trả về khóa cao nhất trong số các khóa nhỏ hơn khóa được chỉ định.
- Phương thức firstEntry(): Trả về bản ghi đầu tiên (bản ghi có khóa thấp nhất) của Map.
- Phương thức lastEntry(): Trả về bản ghi cuối cùng (bản ghi có khóa cao nhất) của Map.
- Phương thức pollFirstEntry(): Trả về và xóa bản ghi đầu tiên của Map.
- Phương thức pollLastEntry(): Trả về và xóa bản ghi cuối cùng của Map.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.NavigableMap; import java.util.TreeMap; class Main { public static void main(String[] args) { NavigableMap<Integer, String> sinh_vien = new TreeMap<>(); sinh_vien.put(15,"Nguyen A"); sinh_vien.put(24,"Nguyen B"); sinh_vien.put(26,"Nguyen C"); Integer a = 25; System.out.println(sinh_vien); System.out.println(sinh_vien.firstEntry()); System.out.println(sinh_vien.floorKey(a)); System.out.println(sinh_vien.pollFirstEntry()); } } |
Kết quả:
1 2 3 4 |
{15=Nguyen A, 24=Nguyen B, 26=Nguyen C} 15=Nguyen A 24 15=Nguyen A |
Trên đây là khái niệm và ví dụ cơ bản về NavigableMap Interface trong Java. Hy vọng mọi người có thể áp dụng vào trong chương trình của mình. Mọi người hãy tiếp tục theo dõi các bài tiếp theo và cập nhật các bài tiếp theo trên tek4 nhé!
P/s: Cảm ơn mọi người!