Trong bài viết này, chúng ta sẽ tìm hiểu về NavigableSet Interface trong Java và các phương thức của nó với sự trợ giúp của ví dụ dẫn chứng.
NavigableSet Interface
NavigableSet Interface cung cấp các tính năng để điều hướng giữa các phần tử tập hợp. Nó được coi là một kiểu loại SortedSet.
Lớp triển khai NavigableSet
Để sử dụng các chức năng của Interface NavigableSet, chúng ta cần sử dụng lớp TreeSet thực hiện triển khai cho NavigableSet.
Làm thế nào để sử dụng NavigableSet?
Trong Java, chúng ta phải thêm gói java.util.NavigableSet để sử dụng NavigableSet. Vì NavigableSet là một Interface, ta không thể tạo các đối tượng từ nó. Chúng ta sẽ cần một lớp mà kế thừa từ Interface này để tạo ra một đối tượng. Và sau đây là cách chúng ta có thể tạo NavigableSet thông qua lớp TreeSet.
1 |
NavigableSet<String> so_nguyen = new TreeSet<>(); |
Các phương thức của NavigableSet
NavigableSet được coi là một loại SortedSet. Đó là vì NavigableSet kế thừa SortedSet Interface. Do đó, tất cả các phương thức SortedSet cũng có sẵn trong NavigableSet. Tuy nhiên, một số phương thức của SortedSet bao gồm headSet(), tailSet() và subSet(), được định nghĩa khác nhau trong NavigableSet.
1. Phương thức headSet (phần tử, giá trị kiểu boolean)
Phương thức headSet() trả về tất cả các phần tử của một tập hợp có thể điều hướng trước phần tử được chỉ định (được truyền dưới dạng đối số).
Tham số thứ 2 là 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 sẽ trả về tất cả các phần tử trước phần tử được chỉ định bao gồm cả phần tử được chỉ định.
2. Phương thức tailSet (phần tử, giá trị kiểu boolean)
Phương thức tailSet() trả về tất cả các phần tử của một tập hợp điều hướng sau phần tử được chỉ định (được truyền dưới dạng đối số) bao gồm cả phần tử được chỉ định.
Tham số thứ 2 là 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 trả về tất cả các phần tử sau phần tử được chỉ định mà không bao gồm phần tử đã chỉ định.
3. Phương thức subSet(e1, bv1, e2, bv2)
- Phương thức subSet() trả về tất cả các phần tử giữa e1 và e2 kể cả e1.
- 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 trả về tất cả các phần tử giữa e1 và e2 mà không bao gồm e1.
- Nếu true được truyền cho bv2, phương thức trả về tất cả các phần tử giữa e1 và e2, bao gồm cả e1.
4. Các phương thức điều hướng
NavigableSet cung cấp các phương pháp khác nhau có thể được sử dụng để điều hướng qua các phần tử của nó.
- Phương thức descendingSet(): Đảo ngược thứ tự của các phần tử trong một tập hợp.
- Phương thức descendingIterator(): Trả về một đối tượng vòng lặp có thể được sử dụng để lặp qua một tập hợp theo thứ tự ngược lại.
- Phương thức ceiling(): Trả về phần tử thấp nhất trong số các phần tử lớn hơn hoặc bằng phần tử được chỉ định.
- Phương thức floor(): Trả về phần tử lớn nhất trong số các phần tử nhỏ hơn hoặc bằng phần tử được chỉ định.
- Phương thức higher(): Trả về phần tử thấp nhất trong số các phần tử lớn hơn phần tử được chỉ định.
- Phương thức lower(): Trả về phần tử lớn nhất trong số các phần tử nhỏ hơn phần tử được chỉ định.
- Phương thức pollFirst(): Trả về và xóa phần tử đầu tiên khỏi tập hợp.
- Phương thức pollLast(): Trả về và xóa phần tử cuối cùng khỏi tập hợp.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.NavigableSet; import java.util.TreeSet; class Main { public static void main(String[] args) { NavigableSet<String> sinh_vien = new TreeSet<>(); sinh_vien.add("Sinh vien Y"); sinh_vien.add("Sinh vien Luat"); sinh_vien.add("Sinh vien Duoc"); System.out.println(sinh_vien); String i = sinh_vien.first(); System.out.println(i); String j = sinh_vien.last(); System.out.println(j); String k = sinh_vien.pollFirst(); System.out.println(k); String l = sinh_vien.pollLast(); System.out.println(l); System.out.println(sinh_vien); } } |
Kết quả:
1 2 3 4 5 6 |
[Sinh vien Duoc, Sinh vien Luat, Sinh vien Y] Sinh vien Duoc Sinh vien Y Sinh vien Duoc Sinh vien Y [Sinh vien Luat] |
Trên đây là khái niệm và ví dụ cơ bản về NavigableSet 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 mới nhất trên tek4 nhé!
P/s: Cảm ơn mọi người!