SortedSet Interface trong Java với ví dụ cụ thể

SortedSet interface chứa trong gói java.util, thừa kế từ Set interface. Ngoài cơ chế đảm bảo các phần tử không trùng lặp, nó còn sắp xếp theo thứ tự tăng dần.

Set-TreeSet-SortedSet-In-Java-Collection

Ở bức hình trên, NavigableSet thừa kế từ SortedSet interface. Bởi vì các phần tử trong Set không có thứ tự. NavigableSet cung cấp các method cho việc triển khai Set trong đó các phần tử được sắp xếp theo thứ tự tăng dần.

import java.util.*; 
  
class SortedSetExample{ 
  
    public static void main(String[] args) 
    { 
        SortedSet<String> ts 
            = new TreeSet<String>(); 
  
        // Adding elements into the TreeSet 
        // using add() 
        ts.add("India"); 
        ts.add("Australia"); 
        ts.add("South Africa"); 
  
        // Adding the duplicate 
        // element 
        ts.add("India"); 
  
        // Displaying the TreeSet 
        System.out.println(ts); 
  
        // Removing items from TreeSet 
        // using remove() 
        ts.remove("Australia"); 
        System.out.println("Set after removing "
                           + "Australia:" + ts); 
  
        // Iterating over Tree set items 
        System.out.println("Iterating over set:"); 
        Iterator<String> i = ts.iterator(); 
        while (i.hasNext()) 
            System.out.println(i.next()); 
    } 
}

Output

[Australia, India, South Africa]
Set after removing Australia:[India, South Africa]
Iterating over set:
India
South Africa

Note: Tất cả các phần tử của một SortedSet phải implement từ Comparable interface hoặc được Comparator chấp nhận (các phần tử có thứ tự tự nhiên là int, long, char, etc) vì tất cả chúng đều được đem đi so sánh để sắp xếp theo thứ tự. 

Khởi tạo SortedSet

Vì SortedSet là một interface nên chúng ta không thể khởi tạo một object từ nó mà phải thông qua một implementation chẳng hạn như TreeSet.

Thao tác cơ bản trên SortedSet

Chúng ta có thể sử dụng tất cả các method từ một SortedSet implementation thông qua instance được khởi tạo. Dưới đây là một số thao tác cơ bản với SortedSet.

SortedSet<Obj> set = new TreeSet<Obj> ();

Thêm phần tử 

Để thêm phần từ vào SortedSet chúng ta có thể sử dụng add() method. Tuy nhiên lưu ý rằng thứ tự thêm sẽ không được đảm bảo thay vào đó, khi mỗi phần tử được thêm vào chúng sẽ được đem đi so sánh và sắp xếp theo giá trị tăng dần.

Một điều nữa đáng chú ý là những phần tử trùng lặp sẽ bị loại bỏ và phần tử null không được chấp nhận trong SortedSet.

import java.util.*; 
  
class GFG { 
  
    public static void main(String[] args) 
    { 
        SortedSet<String> ts 
            = new TreeSet<String>(); 
  
        // Elements are added using add() method 
        ts.add("A"); 
        ts.add("B"); 
        ts.add("C"); 
        ts.add("A"); 
  
        System.out.println(ts); 
    } 
}

Output

[A, B, C]

Truy xuất phần tử

Có một số phương thức phổ biến contains(), first() và last() etc dùng để truy xuất các phần tử trong SortedSet.

import java.util.*; 
class GFG { 
  
    public static void main(String[] args) 
    { 
        SortedSet<String> ts 
            = new TreeSet<String>(); 
  
        // Elements are added using add() method 
        ts.add("A"); 
        ts.add("B"); 
        ts.add("C"); 
        ts.add("A"); 
  
        System.out.println("Sorted Set is " + ts); 
  
        String check = "D"; 
  
        // Check if the above string exists in 
        // the SortedSet or not 
        System.out.println("Contains " + check 
                           + " " + ts.contains(check)); 
  
        // Print the first element in 
        // the SortedSet 
        System.out.println("First Value " + ts.first()); 
  
        // Print the last element in 
        // the SortedSet 
        System.out.println("Last Value " + ts.last()); 
    } 
}

Output

Sorted Set is [A, B, C]
Contains D false
First Value A
Last Value C

Xoá phần tử

Một phần tử sẽ bị xoá khỏi SortedSet khi chúng ta gọi remove() method.

import java.util.*; 
class GFG{ 
  
    public static void main(String[] args) 
    { 
        SortedSet<String> ts 
            = new TreeSet<String>(); 
  
        // Elements are added using add() method 
        ts.add("A"); 
        ts.add("B"); 
        ts.add("C"); 
        ts.add("B"); 
        ts.add("D"); 
        ts.add("E"); 
  
        System.out.println("Initial TreeSet " + ts); 
  
        // Removing the element b 
        ts.remove("B"); 
  
        System.out.println("After removing element " + ts); 
    } 
}

Output

Initial TreeSet [A, B, C, D, E]
After removing element [A, C, D, E]

Duyệt phần tử

Hiển nhiên là tất cả các collection đều có thể duyệt thông qua các vòng lặp như for, hoặc có thể sử dụng Stream API để duyệt. 

import java.util.*; 
class GFG 
 {  
    public static void main(String[] args) 
    { 
        SortedSet<String> ts 
            = new TreeSet<>(); 
   
        // Elements are added using add() method 
        ts.add("C"); 
        ts.add("D"); 
        ts.add("E"); 
        ts.add("A"); 
        ts.add("B"); 
        ts.add("Z"); 
   
        // Iterating though the SortedSet 
        for (String value : ts) 
            System.out.print(value 
                             + ", "); 
        System.out.println(); 
    } 
}

Output

A, B, C, D, E, Z,

Tóm lược

Qua bài viết chúng ta đã tìm hiểu được thêm một thành phần trong collection framework, SortedSet giúp lưu trữ các phần tử không trùng lặp. sắp xếp tăng dần.

Nguồn tham khảo

https://www.geeksforgeeks.org/sortedset-java-examples/

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x