TreeSet implements the NavigableSet interface, backed internally by a self-balancing Red-Black Binary Search Tree. It ensures that elements are stored strictly unique and maintained in ascending sorted order.
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(50);
numbers.add(20);
numbers.add(80);
numbers.add(10);
numbers.add(90);
// Elements automatically sorted: [10, 20, 50, 80, 90]
System.out.println("Sorted TreeSet: " + numbers);
// 1. Boundary Queries:
System.out.println("Smallest (first): " + numbers.first()); // 10
System.out.println("Largest (last): " + numbers.last()); // 90
// 2. NavigableSet Proximity Queries:
System.out.println("Higher than 50 (strictly >): " + numbers.higher(50)); // 80
System.out.println("Lower than 50 (strictly <): " + numbers.lower(50)); // 20
System.out.println("Ceiling of 45 (>=): " + numbers.ceiling(45)); // 50
System.out.println("Floor of 45 (<=): " + numbers.floor(45)); // 20
// 3. SubSet Range Extraction:
System.out.println("Subset [20 to 80): " + numbers.subSet(20, 80)); // [20, 50]
}
}
| Feature | HashSet |
LinkedHashSet |
TreeSet |
|---|---|---|---|
| Ordering | None (Random) | Insertion Order | Sorted Order (Natural / Comparator) |
| Time Complexity | O(1) Constant | O(1) Constant | O(log n) Logarithmic |
| Underlying Structure | Hash Table (HashMap) | Hash Table + Doubly-linked list | Red-Black Binary Search Tree |
| Permits Null? | Yes (1 null) | Yes (1 null) | No (Throws NullPointerException) |
Now let us explore the most critical key-value data structure in Java: HashMap. Proceed to: Java HashMap & LinkedHashMap →
Accelerate your Java mastery by studying these tightly connected core tutorials:
O(1) unordered set alternative.
The underlying backing store of TreeSet.
Defining sorting logic.
Set hierarchy.