Sử dụng TreeSet trong Java

Tram Ho

Class TreeSet là một phần của java collection framework.
Nó implement từ interface NavigableSet, lớp này được kế thừa từ SortedSet.

Lớp TreeSet trong nội bộ sử dụng TreeMap để lưu trữ các phần tử.
Các phần tử trong một TreeSet được sắp xếp theo thứ tự tự nhiên của chúng.

Bạn cũng có thể cung cấp một phương thức so sánh tùy chỉnh Comparator cho TreeSet tại thời điểm khởi tạo để cho phép nó sắp xếp các phần tử dựa trên bộ so sánh được cung cấp.

SortedSet interface cung cấp các hàm để giữ cho các phần tử được sắp xếp. Và NavigableSet interface cung cấp các hàm để điều hướng thông qua SortedSet.

Ví dụ, tìm phần tử lớn hơn hoặc nhỏ hơn phần tử đã cho, tìm phần tử đầu tiên và phần tử cuối cùng trong SortedSet.

Vì lớp TreeSet kế thừa từ NavigableSet interface, nên nó có những phương thức của cả NavigableSet cũng như SortedSet.

Một số đặc điểm quan trọng của TreeSet trong Java :

  • TreeSet không chứa các phần tử trùng lặp.
  • Các phần tử trong một TreeSet được sắp xếp theo thứ tự tự nhiên của chúng, hoặc dựa trên một bộ so sánh Comparator tùy chỉnh được cung cấp tại thời điểm khởi tạo TreeSet.
  • TreeSet không thể chứa các giá trị null.
  • TreeSet sử dụng TreeMap để lưu trữ các phần tử.
  • TreeSet class không phải là một thread-safe. Bạn phải đồng bộ hóa rõ ràng quyền truy cập đồng thời vào TreeSet trong môi trường đa luồng.

Tạo một TreeSet

1. Simple TreeSet

Ví dụ sau đây cho thấy cách tạo một TreeSet và thêm các phần tử mới vào nó.
TreeSet sẽ được sắp xếp dựa trên thứ tự tự nhiên của các phần tử.

2. TreeSet với thiết lập so sánh tùy chỉnh

Ví dụ sau cho thấy cách tạo ra một TreeSet bằng thiết lập so sánh tùy chỉnh.
Đó là sắp xếp tên theo thứ tự A-B.

3. TreeSet với tùy chỉnh Comparator (Thứ tự giảm dần)

Ví dụ dưới đây minh họa cách tạo một TreeSet bằng một bộ so sánh tùy chỉnh, sắp xếp các phần tử theo thứ tự giảm dần.

4. Truy cập các phần tử của một TreeSet

Ví dụ sau đây thực hiện các việc sau :

  • Xác định size của một TreeSet.
  • Kiểm tra xem một phần tử có tồn tại trong TreeSet hay không.
  • Tìm phần tử đầu tiên của một TreeSet.
  • Tìm phần tử cuối cùng của một TreeSet.
  • Tìm phần tử lớn hơn phần tử đã cho trong TreeSet.
  • Tìm phần tử nhỏ hơn phần tử đã cho trong TreeSet.

5. TreeSet với các đối tượng do người dùng xác định

Ví dụ trong phần này cho thấy cách tạo một TreeSet của các đối tượng do người dùng xác định.

Vì TreeSet cần giữ các đối tượng được sắp xếp, bạn phải triển khai Comparable interface trong lớp do người dùng xác định và cung cấp việc triển khai cho hàm compareTo() hoặc cung cấp Comparator tùy chỉnh tại thời điểm tạo ra TreeSet.

6. Kết luận

Trong bài viết này, bạn đã tìm hiểu một TreeSet trong Java là gì, cách tạo một TreeSet, cách chuyển một bộ so sánh tùy chỉnh cho Treeset để thay đổi thứ tự sắp xếp của các phần tử, cách truy cập các phần tử của Treeset, cách loại bỏ các phần tử từ một TreeSet và cách tạo một TreeSet của các đối tượng do người dùng xác định.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo