Mục lục
TreeSet là một trong những implementation của SortedSet interface được sử dụng phổ biến nhất trong Java sử dụng cấu trúc cây để lưu trữ. Thứ tự các phần tử sẽ được sắp xếp khi thêm vào bằng cách so sánh với các phần tử chứa sẵn trong SortedSet.
Để so sánh các phần tử với nhau TreeSet hoặc là sử dụng thứ tự tự nhiên của các phần tử ví dụ ‘a’ thì bé hơn ‘b’; 1 thì bé hơn 2. Hoặc nếu các object implement Comparator interface thì nó sẽ sử dụng như là trình cung cấp phép tính để so sánh và sắp xếp các phần tử.
Ở 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.
Ví dụ sử dụng TreeSet
Cùng xem ví dụ dưới đây để xem cách sử dung TreeSet.
import java.util.*; class TreeSetExample { public static void main(String[] args) { TreeSet<String> ts1 = new TreeSet<String>(); // Elements are added using add() method ts1.add("A"); ts1.add("B"); ts1.add("C"); // Duplicates will not get insert ts1.add("C"); System.out.println(ts1); } }
Output
[A, B, C]
Thao tác cơ bản trên SortedSet
TreeSet cung cấp vô số các method phục vụ cho hầu hết các nhu cầu sử dụng của một Set implementation.
Thêm phần tử
Để thêm phần từ vào TreeSet 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 được chấp nhận trong TreeSet.
import java.util.*; class GFG { public static void main(String[] args) { TreeSet<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]
Note: Tất cả các phần tử của một TreeSet 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ự.
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 TreeSet.
import java.util.*; class GFG { public static void main(String[] args) { TreeSet<String> ts = new TreeSet<String>(); ts.add("A"); ts.add("B"); ts.add("C"); ts.add("A"); System.out.println("TreeSet is " + ts); String check = "D"; System.out.println("Contains " + check + " " + ts.contains(check)); System.out.println("First Value " + ts.first()); System.out.println("Last Value " + ts.last()); } }
Output
TreeSet 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 TreeSet khi chúng ta gọi remove() method.
import java.util.*; class GFG{ public static void main(String[] args) { TreeSet<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]
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, TreeSet 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/treeset-in-java-with-examples/