Java TreeSet classJava TreeSet class implements the Set interface that uses a tree for storage. It inherits AbstractSet class and implements the NavigableSet interface. The objects of the TreeSet class are stored in ascending order. The important points about the Java TreeSet class are:
Internal Working of The TreeSet ClassTreeSet is being implemented using a binary search tree, which is self-balancing just like a Red-Black Tree. Therefore, operations such as a search, remove, and add consume O(log(N)) time. The reason behind this is there in the self-balancing tree. It is there to ensure that the tree height never exceeds O(log(N)) for all of the mentioned operations. Therefore, it is one of the efficient data structures in order to keep the large data that is sorted and also to do operations on it. Synchronization of The TreeSet ClassAs already mentioned above, the TreeSet class is not synchronized. It means if more than one thread concurrently accesses a tree set, and one of the accessing threads modify it, then the synchronization must be done manually. It is usually done by doing some object synchronization that encapsulates the set. However, in the case where no such object is found, then the set must be wrapped with the help of the Collections.synchronizedSet() method. It is advised to use the method during creation time in order to avoid the unsynchronized access of the set. The following code snippet shows the same. Hierarchy of TreeSet classAs shown in the above diagram, the Java TreeSet class implements the NavigableSet interface. The NavigableSet interface extends SortedSet, Set, Collection and Iterable interfaces in hierarchical order. TreeSet Class DeclarationLet's see the declaration for java.util.TreeSet class. Constructors of Java TreeSet Class
Methods of Java TreeSet Class
Java TreeSet ExamplesJava TreeSet Example 1:Let's see a simple example of Java TreeSet. FileName: TreeSet1.java Test it NowOutput: Ajay Ravi Vijay Java TreeSet Example 2:Let's see an example of traversing elements in descending order. FileName: TreeSet2.java Test it NowOutput: Traversing element through Iterator in descending order Vijay Ravi Ajay Traversing element through NavigableSet in descending order Vijay Ravi Ajay Java TreeSet Example 3:Let's see an example to retrieve and remove the highest and lowest Value. FileName: TreeSet3.java Output: Lowest Value: 12 Highest Value: 66 Java TreeSet Example 4:In this example, we perform various NavigableSet operations. FileName: TreeSet4.java Output: Initial Set: [A, B, C, D, E] Reverse Set: [E, D, C, B, A] Head Set: [A, B, C] SubSet: [B, C, D, E] TailSet: [D, E] Java TreeSet Example 5:In this example, we perform various SortedSetSet operations. FileName: TreeSet5.java Output: Intial Set: [A, B, C, D, E] Head Set: [A, B] SubSet: [A, B, C, D] TailSet: [C, D, E] Java TreeSet Example: BookLet's see a TreeSet example where we are adding books to the set and printing all the books. The elements in TreeSet must be of a Comparable type. String and Wrapper classes are Comparable by default. To add user-defined objects in TreeSet, you need to implement the Comparable interface. FileName: TreeSetExample.java Output: 101 Data Communications & Networking Forouzan Mc Graw Hill 4 121 Let us C Yashwant Kanetkar BPB 8 233 Operating System Galvin Wiley 6 ClassCast Exception in TreeSetIf we add an object of the class that is not implementing the Comparable interface, the ClassCast Exception is raised. Observe the following program. FileName: ClassCastExceptionTreeSet.java When we compile the above program, we get the ClassCastException, as shown below. Exception in thread "main" java.lang.ClassCastException: class Employee cannot be cast to class java.lang.Comparable (Employee is in unnamed module of loader 'app'; java.lang.Comparable is in module java.base of loader 'bootstrap') at java.base/java.util.TreeMap.compare(TreeMap.java:1569) at java.base/java.util.TreeMap.addEntryToEmptyMap(TreeMap.java:776) at java.base/java.util.TreeMap.put(TreeMap.java:785) at java.base/java.util.TreeMap.put(TreeMap.java:534) at java.base/java.util.TreeSet.add(TreeSet.java:255) at ClassCastExceptionTreeSet.main(ClassCastExceptionTreeSet.java:52) Explanation: In the above program, it is required to implement a Comparable interface. It is because the TreeSet maintains the sorting order, and for doing the sorting the comparison of different objects that are being inserted in the TreeSet is must, which is accomplished by implementing the Comparable interface. Next TopicJava PriorityQueue class |