Interface SortedSet<E>

SortedSet là một tập hợp (set) cung cấp thứ tự tổng quát cho các phần tử của nó. Các phần tử trong tập hợp này được sắp xếp theo thứ tự tự nhiên của chúng hoặc theo một Comparator được cung cấp khi tạo SortedSet. Iterator của tập hợp này sẽ duyệt qua các phần tử theo thứ tự tăng dần. Interface này là sự tương đương của SortedMap trong tập hợp.

Đặc điểm nổi bật của Interface SortedSet<E>

↳ Thứ tự tổng quát: Tập hợp SortedSet sắp xếp các phần tử dựa trên thứ tự tự nhiên của chúng hoặc theo một Comparator được chỉ định.

↳ Duyệt theo thứ tự: Iterator của SortedSet sẽ duyệt qua các phần tử theo thứ tự tăng dần.

↳ Yêu cầu về so sánh: Tất cả các phần tử chèn vào SortedSet phải thực hiện giao diện Comparable (hoặc được chấp nhận bởi Comparator được chỉ định). Tất cả các phần tử phải có khả năng so sánh lẫn nhau: e1.compareTo(e2) (hoặc comparator.compare(e1, e2)) không được ném ra ClassCastException đối với bất kỳ phần tử nào trong tập hợp.

Yêu cầu về nhất quán với equals

↳ Nhất quán với equals: Thứ tự duy trì bởi SortedSet (dù có Comparator hay không) phải nhất quán với phương thức equals nếu tập hợp cần thực hiện đúng contract của interface Set. Điều này có nghĩa là các phần tử được coi là bằng nhau theo compareTo (hoặc compare) cũng phải được coi là bằng nhau theo equals.

Các phương thức bổ sung

Tạo tập hợp: Các lớp triển khai SortedSet nên cung cấp bốn kiểu constructor "chuẩn":

↳ Constructor không tham số, tạo ra một SortedSet rỗng được sắp xếp theo thứ tự tự nhiên của các phần tử.

↳ Constructor với một đối số Comparator, tạo ra một SortedSet rỗng được sắp xếp theo Comparator đã chỉ định.

↳ Constructor với một đối số Collection, tạo ra một SortedSet mới với cùng các phần tử như đối số, sắp xếp theo thứ tự tự nhiên của các phần tử.

↳ Constructor với một đối số SortedSet, tạo ra một SortedSet mới với cùng các phần tử và thứ tự như SortedSet đầu vào.

Lưu ý

↳ Phạm vi con: Một số phương thức trả về các tập hợp con với phạm vi bị giới hạn. Các phạm vi này thường là nửa mở, tức là chúng bao gồm điểm cuối thấp nhưng không bao gồm điểm cuối cao (nếu có). Để có phạm vi đóng (bao gồm cả hai điểm cuối), và nếu loại phần tử cho phép tính toán phần tử kế tiếp của một giá trị cho trước, chỉ cần yêu cầu phạm vi con từ điểm thấp đến kế tiếp của điểm cao. Ví dụ, giả sử s là một SortedSet của các chuỗi. Đoạn mã sau đây lấy một cái nhìn chứa tất cả các chuỗi trong s từ thấp đến cao, bao gồm cả:

Ví dụ

SortedSet<String> sub = s.subSet(low, high + "");

↳ Kỹ thuật tương tự có thể được sử dụng để tạo phạm vi mở (không chứa điểm cuối nào). Đoạn mã sau đây lấy một cái nhìn chứa tất cả các chuỗi trong s từ thấp đến cao, không bao gồm điểm cuối:

Ví dụ

SortedSet<String> sub = s.subSet(low + "", high);

Khai báo Interface SortedSet<E> trong Java

Để sử dụng Interface SortedSet<E>, bạn cần import gói java.util vào đầu file Java của mình. Gói này cung cấp các lớp và giao diện để làm việc với các collection trong Java.

Cú pháp câu lệnh import:

Cú Pháp

import java.util.SortedSSet;

Cú pháp khai báo Interface SortedSet<E>:

Cú Pháp

public interface SortedSet<E>
extends Collection<E>

Dưới đây là giải thích chi tiết về cú pháp khai báo này:

↳ public: Phạm vi truy cập cho phép interface này được sử dụng ở bất kỳ đâu trong chương trình.

↳ interface: Từ khóa khai báo một interface – nơi chỉ định các phương thức mà lớp con phải cài đặt.

↳ SortedSet<E>: Tên interface là SortedSet, có sử dụng generic E để đại diện cho kiểu phần tử trong tập hợp được sắp xếp.

↳ extends Collection<E>: Interface SortedSet kế thừa từ Collection<E>, tức là nó cũng là một dạng tập hợp, nhưng có thêm đặc điểm sắp xếp.

Tính năng bổ sung của SortedSet

↳ Thứ tự tổng quát: SortedSet cung cấp khả năng sắp xếp các phần tử theo thứ tự tổng quát. Các phần tử được sắp xếp theo thứ tự tự nhiên của chúng hoặc theo một Comparator được chỉ định khi tạo SortedSet.

↳ Truy cập thứ tự: Iterator của SortedSet duyệt qua các phần tử theo thứ tự tăng dần, nhờ vào thứ tự sắp xếp được duy trì.

↳ Phạm vi con: SortedSet cung cấp các phương thức để lấy các phần tử trong một phạm vi cụ thể, với các phạm vi thường là nửa mở.

Các phương thức của Interface SortedSet<E>

Giao diện SortedSet mở rộng giao diện Set và cung cấp các phương thức để thao tác với các phần tử đã được sắp xếp. Nó là một cấu trúc dữ liệu hữu ích khi bạn cần duy trì một bộ sưu tập các phần tử theo thứ tự và truy cập nhanh đến các phần tử đầu tiên, cuối cùng hoặc theo phạm vi. Dưới đây là danh sách tất cả các phương thức của Interface SortedSet<E> trong Java:

↳ comparator(): Trả về bộ so sánh được sử dụng để sắp xếp các phần tử trong tập hợp, hoặc trả về null nếu tập hợp sử dụng thứ tự tự nhiên.

↳ first(): Trả về phần tử đầu tiên (nhỏ nhất) trong tập hợp theo thứ tự đã định.

↳ last(): Trả về phần tử cuối cùng (lớn nhất) trong tập hợp theo thứ tự đã định.

↳ headSet(E toElement): Trả về một tập hợp con chứa các phần tử nhỏ hơn toElement.

↳ tailSet(E fromElement): Trả về một tập hợp con chứa các phần tử lớn hơn hoặc bằng fromElement.

↳ subSet(E fromElement, E toElement): Trả về một tập hợp con chứa các phần tử nằm trong khoảng từ fromElement (bao gồm) đến toElement (không bao gồm).

↳ spliterator(): Tạo một Spliterator để duyệt qua các phần tử trong tập hợp một cách hiệu quả, đặc biệt là khi sử dụng song song.

Dưới đây là tóm tắt đơn giản về đặc trưng của bốn giao diện trong Java Collections Framework

Giao diệnĐặc trưng chính
List<E>- Thứ tự: Phần tử được lưu trữ theo thứ tự chèn và có thể truy cập bằng chỉ số.
- Trùng lặp: Cho phép các phần tử trùng lặp.
- Thao tác: Truy cập và sửa đổi phần tử tại bất kỳ vị trí nào bằng chỉ số.
Queue<E>- Hàng đợi: Tuân theo quy tắc FIFO (First-In-First-Out).
- Thao tác: Thêm phần tử vào cuối và loại bỏ từ đầu.
- Truy cập: Thường chỉ truy cập phần tử đầu tiên.
Deque<E>- Hàng đợi hai đầu: Cho phép thêm và loại bỏ phần tử từ cả hai đầu.
- Thao tác: Có thể hoạt động như hàng đợi (FIFO) hoặc ngăn xếp (LIFO).
- Truy cập: Truy cập phần tử ở cả hai đầu.
Set<E>- Không trùng lặp: Không cho phép các phần tử trùng lặp.
- Thứ tự: Không có thứ tự cụ thể (trừ các lớp con như TreeSet có thứ tự tự nhiên).
- Thao tác: Thêm, xóa, và kiểm tra sự tồn tại của phần tử.
SortedSet<E>- Thứ tự: Tự động sắp xếp các phần tử theo thứ tự tự nhiên hoặc theo Comparator được cung cấp.
- Không trùng lặp: Không cho phép các phần tử trùng lặp.
- Thao tác: Cung cấp các phương thức như subSet, headSet, và tailSet.
- Truy cập: Truy cập phần tử theo thứ tự sắp xếp và có thể lấy các phần tử trong phạm vi cụ thể.

Như vậy, chúng ta đã cùng nhau tìm hiểu các phương thức đặc trưng của giao diện SortedSet<E>. Với khả năng duy trì các phần tử luôn được sắp xếp theo thứ tự, cùng với các phương thức truy cập nhanh đến phần tử đầu tiên, cuối cùng hoặc theo phạm vi, SortedSet là lựa chọn lý tưởng khi bạn cần một tập hợp có trật tự và hiệu quả trong việc truy xuất dữ liệu có điều kiện.

Câu Nói Truyền Cảm Hứng

“Bắt đầu ở đâu không quan trọng, quan trọng là bạn sẵn sàng bắt đầu.” – W. Clement Stone

Không Gian Tích Cực

“Chúc bạn luôn giữ vững niềm tin và sức mạnh để vượt qua mọi thử thách trong cuộc sống.”