Trong hướng dẫn này, chúng ta sẽ tìm hiểu về interface NavigableMap trong java và các phương thức của nó với sự trợ giúp của một ví dụ.

Các NavigableMap interface của framework collection trong Java cung cấp các tính năng để di chuyển giữa các mục bản đồ.

Nó được coi là một loại MapSort .

1. Lớp triển khai NavigableMap

Vì NavigableMap là interface nên chúng ta không thể tạo các đối tượng từ nó.

Để sử dụng các hàm của NavigableMap interface, chúng ta cần sử dụng lớp TreeMap triển khai từ NavigableMap.

2. Làm thế nào để sử dụng NavigableMap?

Trong Java, chúng ta phải nhập gói java.util.NavigableMap để sử dụng NavigableMap. Sau khi chúng ta nhập gói, đây là cách chúng ta có thể tạo một bản đồ có thể điều hướng.

// NavigableMap implementation by TreeMap class
NavigableMap<Key, Value> numbers = new TreeMap<>();

Trong đoạn mã trên, chúng ta đã tạo một bản đồ điều hướng có tên con số của lớp TreeMap.

Đây,

  • key – một số nhận dạng duy nhất được sử dụng để liên kết từng phần tử (giá trị) trong bản đồ
  • Giá trị – các yếu tố được liên kết bởi các phím trong bản đồ

3. Phương thức của NavigableMap

Các NavigableMap được coi là một loại SortedMap. Đó là vì NavigableMap mở rộng từ SortedMapi nterface.

Do đó, tất cả các SortedMap phương thức 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 SortedMap, hãy truy cập Java SortedMap .

Tuy nhiên, một số các phương thức SortedMap( headMap(), tailMap()và subMap()) được định nghĩa khác nhau trong NavigableMap.

Hãy xem cách các phương thức này được định nghĩa trong NavigableMap.

3.1 headMap (key, booleanValue)

Các headMap()phương thức trả về tất cả các mục của một bản đồ điều hướng gắn liền với tất cả những phím trước khi quy định key (được chuyển như một đối số).

Các booleanValue là một tham số tùy chọn. Giá trị mặc định của nó là false.

Nếu true được thông qua dưới dạng booleanValue, phương thức trả về tất cả các mục nhập được liên kết với tất cả các khóa đó trước key, bao gồm mục nhập được liên kết với key.

3.2 tailMap (key, booleanValue)

phương thức  tailMap() trả về tất cả các mục của một bản đồ điều hướng gắn liền với tất cả những phím sau khi quy định key (được truyền dưới dạng đối số) bao gồm mục nhập được liên kết với key.

booleanValue là một tham số tùy chọn. Giá trị mặc định của nó là true.

Nếu false được thông qua dưới dạng booleanValue, phương thức trả về tất cả các mục nhập được liên kết với các khóa đó sau key, mà không bao gồm mục nhập được liên kết với key.

3.3 subMap (k1, bv1, k2, bv2)

phương thức subMap() trả về tất cả các mục có liên quan với các phím giữa k1 và k2 bao gồm mục nhập được liên kết với k1.

Các 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 thông qua là bv1, phương thức trả về tất cả các mục nhập được liên kết với các khóa giữa k1 và k2, mà không bao gồm mục nhập được liên kết với k1.

Nếu true được thông qua là bv2, phương thức trả về tất cả các mục nhập được liên kết với các khóa giữa k1 và k2, bao gồm mục nhập được liên kết với k1.

4. Các phương thức khác

Các NavigableMap cung cấp phương thức khác nhau có thể được sử dụng để xác định vị trí các mục của bản đồ.

  • downdingMap() – đảo ngược thứ tự các mục nhập trong bản đồ
  • LowerndingKeyMap() – đảo ngược thứ tự các phím trong bản đồ
  • ceilingEntry() – trả về mục nhập có khóa thấp nhất trong số tất cả các mục nhập có khóa lớn hơn hoặc bằng khóa được chỉ định
  • 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
  • floorEntry() – trả về một mục nhập có khóa cao nhất trong số tất cả các mục nhập có khóa nhỏ hơn hoặc bằng khóa được chỉ định
  • 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
  • highEntry() – trả về một mục nhập có khóa thấp nhất trong số tất cả các mục nhập có khóa lớn hơn khóa được chỉ định
  • highKey() – trả về khóa thấp nhất trong số các khóa lớn hơn khóa được chỉ định
  • lowEntry() – trả về một mục nhập có khóa cao nhất trong số tất cả các mục nhập có khóa nhỏ hơn khóa được chỉ định
  • lowKey() – trả về khóa(key) cao nhất trong số các khóa nhỏ hơn khóa được chỉ định
  • firstEntry() – trả về mục nhập đầu tiên (mục nhập có khóa thấp nhất) của bản đồ
  • lastEntry() – trả về mục nhập cuối cùng (mục nhập có khóa cao nhất) của bản đồ
  • thăm dò ý kiến ​​() – trả về và xóa mục nhập đầu tiên của bản đồ
  • thăm dò ý kiến ​​() – trả về và xóa mục nhập cuối cùng của bản đồ

Để tìm hiểu thêm, hãy truy cập Java NavigableMap (tài liệu Java chính thức) .

5. Triển khai NavigableMap trong lớp TreeMap

import java.util.NavigableMap;
import java.util.TreeMap;

class Main {

    public static void main(String[] args) {
        // Creating NavigableMap using TreeMap
        NavigableMap<String, Integer> numbers = new TreeMap<>();

        // Insert elements to map
        numbers.put("Two", 2);
        numbers.put("One", 1);
        numbers.put("Three", 3);
        System.out.println("NavigableMap: " + numbers);

        // Access the first entry of the map
        System.out.println("First Entry: " + numbers.firstEntry());

        // Access the last entry of the map
        System.out.println("Last Entry: " + numbers.lastEntry());

        // Remove the first entry from the map
        System.out.println("Removed First Entry: " + numbers.pollFirstEntry());

        // Remove the last entry from the map
        System.out.println("Removed Last Entry: " + numbers.pollLastEntry());
    }
}

Đầu ra

NavigableMap: {One=1, Three=3, Two=2}
First Entry: One=1
Last Entry: Two=2
Removed First Entry: One=1
Removed Last Entry: Two=2

Để tìm hiểu thêm về TreeMap, hãy truy cập Java TreeMap trong series này nhé.

Bây giờ chúng ta đã biết về NavigableMap interface, chúng ta sẽ tìm hiểu về cách triển khai của nó bằng cách sử dụng lớp TreeMap một cách chi tiết trong hướng dẫn tiếp theo.

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!