76.SortedMap Interface trong lập trình Java

Trong lập trình Java, SortedMap là một giao diện (interface) nằm trong gói java.util. SortedMap là một phần mở rộng của giao diện Map, và nó đại diện cho một tập hợp các cặp key-value không có thứ tự (unordered) và không chứa các key trùng lặp, nhưng các key được sắp xếp theo thứ tự tăng dần (ascending order) hoặc giảm dần (descending order).

SortedMap cung cấp các phương thức để thực hiện các hoạt động liên quan đến việc duyệt và truy xuất các cặp key-value theo thứ tự. Các key trong SortedMap phải là các đối tượng có thể so sánh với nhau bằng cách sử dụng một trình so sánh (comparator) hoặc phải có khả năng so sánh tự nhiên (implement Comparable interface).

Dưới đây là một số phương thức quan trọng của giao diện SortedMap:

  1. Comparator<? super K> comparator(): Trả về trình so sánh được sử dụng để sắp xếp các key trong SortedMap. Nếu SortedMap sử dụng trình so sánh tự nhiên, phương thức này trả về null.
  2. SortedMap<K, V> subMap(K fromKey, K toKey): Trả về một SortedMap con chứa các cặp key-value nằm giữa fromKeytoKey, không bao gồm toKey.
  3. SortedMap<K, V> headMap(K toKey): Trả về một SortedMap con chứa các cặp key-value có key nhỏ hơn toKey.
  4. SortedMap<K, V> tailMap(K fromKey): Trả về một SortedMap con chứa các cặp key-value có key lớn hơn hoặc bằng fromKey.
  5. K firstKey(): Trả về key đầu tiên trong SortedMap.
  6. K lastKey(): Trả về key cuối cùng trong SortedMap.

Các lớp cụ thể trong Java như TreeMap đều triển khai giao diện SortedMap. TreeMap là một lớp tập hợp dựa trên cây (red-black tree) sắp xếp các key theo thứ tự tăng dần hoặc giảm dần.

Dưới đây là ví dụ về cách sử dụng giao diện SortedMap và lớp cụ thể TreeMap:

java
import java.util.SortedMap;
import java.util.TreeMap;

public class SortedMapExample {
    public static void main(String[] args) {
        SortedMap<String, Integer> scores = new TreeMap<>();

        // Thêm các cặp key-value vào SortedMap
        scores.put("Alice", 85);
        scores.put("Bob", 90);
        scores.put("Charlie", 78);

        // Duyệt qua các cặp key-value trong SortedMap
        for (String name : scores.keySet()) {
            int score = scores.get(name);
            System.out.println(name + " - " + score);
        }
        /* Output:
           Alice - 85
           Bob - 90
           Charlie - 78
        */

        // Trả về SortedMap con chứa các cặp key-value từ Alice đến Charlie (không bao gồm Charlie)
        SortedMap<String, Integer> subMap = scores.subMap("Alice", "Charlie");
        System.out.println("Subset map: " + subMap);
        // Output: Subset map: {Alice=85, Bob=90}

        // Trả về key đầu tiên và key cuối cùng trong SortedMap
        String firstKey = scores.firstKey();
        String lastKey = scores.lastKey();
        System.out.println("First key: " + firstKey); // Output: First key: Alice
        System.out.println("Last key: " + lastKey); // Output: Last key: Charlie
    }
}

Trong ví dụ trên, chúng ta sử dụng SortedMap để quản lý các cặp key-value được sắp xếp theo thứ tự. Chúng ta sử dụng phương thức keySet() để duyệt qua các key và get() để truy cập giá trị tương ứng với mỗi key. Bên cạnh đó, chúng ta sử dụng các phương thức subMap(), firstKey(), và lastKey() để truy xuất các tập hợp con và key đầu tiên và key cuối cùng trong SortedMap.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top