SortedSet Interface trong Java
Trong bài này, tôi sẽ hướng dẫn đến các bạn một dạng riêng của Set Interface - đó là SortedSet Interface trong Java. Nội dung của bài này sẽ mô tả đặc điểm, các phương thức thường dùng của Collection này. Với mỗi phương thức được liệt kê, tôi sẽ đưa ra ví dụ đơn giản để cho các bạn nắm bắt được.
1. Đặc điểm
SortedSet Interface là 1 dạng riêng của Set Interface nên nó có những đặc điểm của Set
đó là các phần tử trong SortedSet
là duy nhất (nghĩa là giá trị của các phần tử này không được giống nhau) và SortedSet
được sử dụng khi chúng ta muốn lưu trữ một danh sách các phần tử không có sự trùng lặp. Ngoài ra, SortedSet
có điểm vượt trội hơn so với Set
là thứ tự các phần tử trong Set
được sắp xếp tăng dần hoặc giảm dần (mặc định là tăng dần).
2. Các phương thức phổ biến
Vì SortedSet
là 1 dạng riêng của Set
nên những phương thức của nó sẽ tương tự như những phương thức có trong Set
. Trong bài này, tôi sẽ không trình bày lại những phương thức đó mà tôi sẽ giới thiệu những phương thức riêng của SortedSet
để cho các bạn tìm hiểu.
Tạo mới và hiển thị các phần tử của 1 SortedSet
Để khai báo một SortedSet
, chúng ta cần phải dùng đến Class
để triển khai nó, trong phần này chúng ta sẽ sử dụng Class
là TreeSet
bởi vì các phần tử trong TreeSet
được sắp xếp theo chiều tăng dần.
Bài viết này được đăng tại [free tuts .net]
public static void main(String[] args) { // khai báo SortedSet Interface tên sortedSetString // và sử dụng Class là TreeSet để triển khai // TreeSet là 1 Class Collection // các phần tử trong sortedSetString cũng có kiểu là String SortedSet<String> sortedSetString = new TreeSet<String>(); // thêm các phần tử vào trong sortedSetString sortedSetString.add("Monday"); sortedSetString.add("Tuesday"); sortedSetString.add("Wednesday"); sortedSetString.add("Thursday"); sortedSetString.add("Saturday"); sortedSetString.add("Sunday"); // hiển thị sortedSetString ở dạng mảng // các phần tử được sắp xếp tăng dần theo chữ cái đầu tiên System.out.println("Các phần tử có trong sortedSetString: "); System.out.println(sortedSetString); }
Kết quả sau khi biên dịch chương trình:
Lưu ý: Để khai báo SortedSet
chúng ta cần phải import gói thư viện java.util.SortedSet
. Cú pháp import như sau:
// Khai báo SortedSet // thì import gói thư viện java.util.SortedSet import java.util.SortedSet; public class TênClass { // ... }
Trích xuất một phần trong SortedSet
Đối với SortedSet
, Java cung cấp cho chúng ta các phương thức để trích xuất các phần tử trong SortedSet
đó là subset()
, headset()
và tailset()
. Sau đây chúng ta sẽ cùng nhau tìm hiểu về 3 phương thức này.
Phương thức subSet().
SortedSet subSet(E fromElement, E toElement)
Công dụng: Phương thức subSet()
sẽ trả về một SortedSet
được trích xuất từ phần tử fromElement
đến phần tử đứng trước phần tử toElement
của một SortedSet
cho trước.
public static void main(String[] args) { List<Integer> listInteger = new ArrayList<>(); // thêm các phần tử vào trong listInteger listInteger.add(2); listInteger.add(1); listInteger.add(4); listInteger.add(3); listInteger.add(6); listInteger.add(5); listInteger.add(8); listInteger.add(7); listInteger.add(0); listInteger.add(9); // khai báo 1 SortedSet Interface có kiểu là Integer // có các phần tử là các phần tử của listInteger SortedSet<Integer> sortedsetInteger = new TreeSet<>(listInteger); System.out.println("Các phần tử có trong sortedsetInteger: "); System.out.println(sortedsetInteger); // khai báo 1 SortedSet có tên là subset // có các phần tử được trích xuất // trong đoạn [3,7) của sortedsetInteger SortedSet<Integer> subset = sortedsetInteger.subSet(3, 7); System.out.println("Các phần tử có trong subset: "); System.out.println(subset); // nếu phần tử đầu và phần tử cuối bằng nhau // thì kết quả của phương thức subSet() // sẽ trả về subset không có phần tử nào subset = sortedsetInteger.subSet(3, 3); System.out.println("Các phần tử có trong subset: "); System.out.println(subset); }
Kết quả sau khi biên dịch chương trình:
Phương thức headSet().
SortedSet headSet(E toElement)
Công dụng: Phương thức headSet(
) sẽ trả về một SortedSet
được trích xuất từ phần tử đầu tiên đến phần tử đứng trước phần tử toElement
của một SortedSet
cho trước.
public static void main(String[] args) { List<Integer> listInteger = new ArrayList<>(); // thêm các phần tử vào trong listInteger listInteger.add(2); listInteger.add(1); listInteger.add(4); listInteger.add(3); listInteger.add(6); listInteger.add(5); listInteger.add(8); listInteger.add(7); listInteger.add(0); listInteger.add(9); // khai báo 1 SortedSet Interface có kiểu là Integer // có các phần tử là các phần tử của listInteger SortedSet<Integer> sortedsetInteger = new TreeSet<>(listInteger); System.out.println("Các phần tử có trong sortedsetInteger: "); System.out.println(sortedsetInteger); // khai báo 1 SortedSet có tên là headset // có các phần tử được trích xuất // từ phần tử đầu tiên đến // phần tử đứng trước phần tử 5 trong sortedsetInteger SortedSet<Integer> headset = sortedsetInteger.headSet(5); System.out.println("Các phần tử có trong headset: "); System.out.println(headset); }
Kết quả sau khi biên dịch chương trình:
Phương thức tailSet().
SortedSet tailSet(E fromElement)
Công dụng: Phương thức tailSet()
sẽ trả về một SortedSet
được trích xuất từ phần tử lớn hơn hoặc bằng phần tử fromElement
đến phần tử cuối cùng của một SortedSet
cho trước.
public static void main(String[] args) { List<Integer> listInteger = new ArrayList<>(); // thêm các phần tử vào trong listInteger listInteger.add(2); listInteger.add(1); listInteger.add(4); listInteger.add(3); listInteger.add(6); listInteger.add(5); listInteger.add(8); listInteger.add(7); listInteger.add(0); listInteger.add(9); // khai báo 1 SortedSet Interface có kiểu là Integer // có các phần tử là các phần tử của listInteger SortedSet<Integer> sortedsetInteger = new TreeSet<>(listInteger); System.out.println("Các phần tử có trong sortedsetInteger: "); System.out.println(sortedsetInteger); // khai báo 1 SortedSet có tên là tailset // có các phần tử được trích xuất // từ phần tử lớn hơn hoặc bằng // phần tử fromElement đến phần tử cuối cùng của sortedsetInteger SortedSet<Integer> tailset = sortedsetInteger.tailSet(5); System.out.println("Các phần tử có trong tailset: "); System.out.println(tailset); }
Kết quả sau khi biên dịch chương trình:
Tìm phần tử nhỏ nhất và lớn nhất trong SortedSet
Để tìm phần tử nhỏ nhất và lớn nhất trong SortedSet
, Java cung cấp cho chúng ta 2 phương thức đó là first()
(tìm phần tử nhỏ nhất) và last()
(tìm phần tử lớn nhất).
public static void main(String[] args) { List<Integer> listInteger = new ArrayList<>(); // thêm các phần tử vào trong listInteger listInteger.add(2); listInteger.add(1); listInteger.add(4); listInteger.add(3); listInteger.add(6); listInteger.add(5); listInteger.add(8); listInteger.add(7); listInteger.add(0); listInteger.add(9); SortedSet<Integer> sortedsetInteger = new TreeSet<>(listInteger); System.out.println("Các phần tử có trong sortedsetInteger: "); System.out.println(sortedsetInteger); // tìm phần tử lớn nhất và nhỏ nhất trong sortedsetInteger int phanTuLonNhat = sortedsetInteger.last(); int phanTuNhoNhat = sortedsetInteger.first(); System.out.println("Phần tử lớn nhất và nhỏ nhất trong" + " sortedsetInteger là " + phanTuLonNhat + " và " + phanTuNhoNhat); }
Kết quả sau khi biên dịch chương trình:
3. Lời kết
Trong bài này, tôi đã giới thiệu cho các bạn đặc điểm, các phương thức thường dùng đối với SortedSet Interface. Sang bài sau tôi sẽ giới thiệu đến các bạn một loại Interface Collection tiếp theo, đó là Map
trong Java. Các bạn theo dõi nhé!