Rate this post

TreeSet trong Java là một lớp của thư viện java.util. Đây là một bộ sắp xếp dựa trên cây và là một thực thể của Set interface. Nó quản lý các phần tử dưới dạng cây và luôn luôn sắp xếp các phần tử theo thứ tự tăng dần.

Các bài viết liên quan:

Các phần tử trong TreeSet phải là các đối tượng có thể so sánh (implements Comparable interface) hoặc bạn có thể truyền vào một Comparator để xác định thứ tự sắp xếp.

TreeSet cung cấp các phương thức tương tự như HashSet và LinkedHashSet, nhưng có thể sắp xếp các phần tử theo thứ tự.

Ví dụ:

TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("Apple");
treeSet.add("Banana");
treeSet.add("Mango");
treeSet.add("Grapes");

System.out.println(treeSet); 
// Output: [Apple, Banana, Grapes, Mango]

Một số phương thức có thể sử dụng trên TreeSet:

  • first(): trả về phần tử đầu tiên trong TreeSet
  • last(): trả về phần tử cuối cùng trong TreeSet
  • headSet(E toElement): trả về các phần tử trong TreeSet từ đầu đến phần tử toElement
  • tailSet(E fromElement): trả về các phần tử trong TreeSet từ phần tử fromElement đến cuối
  • subSet(E fromElement, E toElement): trả về các phần tử trong TreeSet từ phần tử fromElement đến phần tử toElement.

TreeSet cũng cung cấp các phương thức tìm kiếm như floor, ceiling, lower, higher, pollFirst và pollLast để tìm kiếm và xóa phần tử từ TreeSet.

TreeSet có thể sử dụng trong các trường hợp cần sắp xếp các phần tử theo thứ tự tăng dần hoặc giảm dần và cần tìm kiếm các phần tử trong khoảng cụ thể. Nó cũng có thể sử dụng trong các trường hợp cần quản lý các phần tử duy nhất và không trùng lặp.

Một vài ví dụ sử dụng treeset

Ví dụ 1: Tạo một TreeSet và thêm một số phần tử vào đó

TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(3);
treeSet.add(1);
treeSet.add(2);
treeSet.add(5);
treeSet.add(4);

System.out.println("TreeSet: " + treeSet);
// Output: TreeSet: [1, 2, 3, 4, 5]

Ví dụ 2: Tạo một TreeSet với một Comparator và sử dụng nó để sắp xếp các phần tử theo thứ tự giảm dần

TreeSet<Integer> treeSet = new TreeSet<>(new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
});
treeSet.add(3);
treeSet.add(1);
treeSet.add(2);
treeSet.add(5);
treeSet.add(4);

System.out.println("TreeSet: " + treeSet);
// Output: TreeSet: [5, 4, 3, 2, 1]

Ví dụ 3: Tìm kiếm và xóa phần tử từ TreeSet

TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(3);
treeSet.add(1);
treeSet.add(2);
treeSet.add(5);
treeSet.add(4);

System.out.println("Ceiling: " + treeSet.ceiling(3)); // returns 4
System.out.println("Floor: " + treeSet.floor(3)); // returns 3
System.out.println("Higher: " + treeSet.higher(3)); // returns 4
System.out.println("Lower: " + treeSet.lower(3)); // returns 2

treeSet.pollFirst(); // removes the first element
treeSet.pollLast(); // removes the last element

System.out.println("TreeSet: " + treeSet);
// Output: TreeSet: [2, 3, 4]

Để sử dụng TreeSet, hãy lưu ý rằng các phần tử của nó cần implements Comparable hoặc cần truyền vào một Comparator để xác định thứ tự sắp xếp.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now