TreeSet
is similar to HashSet except that it sorts the elements in the ascending order while HashSet doesn’t maintain any order. TreeSet allows null element but like HashSet it doesn’t allow. Like most of the other collection classes this class is also not synchronized, however it can be synchronized explicitly like this: SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
In this tutorial we are going to see TreeSet example and the difference between TreeSet and other similar collection classes.
TreeSet Example:
In this example we have two TreeSet (TreeSet<String>
& TreeSet<Integer>
). We have added the values to both of them randomly however the result we got is sorted in ascending order.
import java.util.TreeSet; public class TreeSetExample { public static void main(String args[]) { // TreeSet of String Type TreeSet<String> tset = new TreeSet<String>(); // Adding elements to TreeSet<String> tset.add("ABC"); tset.add("String"); tset.add("Test"); tset.add("Pen"); tset.add("Ink"); tset.add("Jack"); //Displaying TreeSet System.out.println(tset); // TreeSet of Integer Type TreeSet<Integer> tset2 = new TreeSet<Integer>(); // Adding elements to TreeSet<Integer> tset2.add(88); tset2.add(7); tset2.add(101); tset2.add(0); tset2.add(3); tset2.add(222); System.out.println(tset2); } }
Output: You can see both the TreeSet have been sorted in ascending order implicitly.
[ABC, Ink, Jack, Pen, String, Test] [0, 3, 7, 88, 101, 222]
Shankar Bendigeri says
Hello Chaitanya,
I think one point to be corrected here. In your previous HashSet section you have mentioned, HashSet accepts null element and in this TreeSet section you have mentioned HashSet doesn’t allow null element and TreeSet does. I think TreeSet does not allow and HashSet does. Please correct it if I am right.
Thanks.
manish gour says
Yes I think you are right.
TreeSet does not allow null value and HashSet allows but only once.
Maria says
Hey Chaitanya!
Thank you for the information you are providing. It’s been useful many times.
I have a question: if in my HashSet I keep objects that have different variables, how will it organize them? Can I choose a variable, so that the HashSet is organized according to that?
Thank’s again