Difference between TreeMap and TreeSet in Java

Difference between TreeSet and TreeMap in Java
Main Difference between TreeMap and TreeSet is that TreeMap is an implementation of Map interface while TreeSet is an implementation of Set interface. There are some similarities between both TreeMap and TreeSet and few differences as well. In this Java tutorial, we will first see similarities between TreeMap and TreeSet and than you will learn some differences between TreeMap and TreeSet in Java. Key point to remember about TreeMap and TreeSet is that they use compareTo() or compare() method to compare object, So if uses puts a String object in TreeSet of Integers, add() method will throw ClassCastException at runtime prior to Java 5, with Java 5 you can use Generics to avoid this happening by declaring TreeMap and TreeSet with parametrized version. If you want to master Java Collection framework by heart, you can see Java Generics and Collection book by Maurice Naftaline, one of the best work on Java Collections framework.

Similarities between TreeMap and TreeSet in Java

Here is a list of similarities between TreeMap and TreeSet in Java:

Difference between TreeMap and TreeSet in Java1) Both TreeMap and TreeSet are sorted data structure, which means they keep there element in predefined Sorted order. Sorting order can be natural sorting order defined by Comparable interface or custom sorting Order defined by Comparator interface. Both TreeMap and TreeSet has overloaded constructor which accept a Comparator, if provided all elements inside TreeSet or TreeMap will be compared and Sorted using this Comparator.

2) Both TreeSet and TreeMap implements base interfaces e.g. TreeSet implements Collection and Set interface so that they can be passed to method where a Collection is expected and TreeMap implements java.util.Map interface, which means you can pass it when a Map is expected.

3) TreeSet is practically implemented using TreeMap instance, similar to HashSet which is internally backed by HashMap instance. See my post Internal Implementation of HashSet to learn more. 

4) Both TreeMap and TreeSet are non synchronized Collection, hence can not be shared between multiple threads. You can make both TreeSet and TreeMap synchronized by wrapping them into Synchronized collection by calling Collections.synchroinzedMap() method.

5) Iterator returned by TreeMap and TreeSet are fail-fast, means they will throw ConcurrentModificationException when TreeMap or TreeSet is modified structurally once Iterator is created. this fail-fast behavior is not guaranteed but works in best effort.

6) Both TreeMap and TreeSet are slower than there Hash counter part like HashSet and HashMap and instead of providing constant time performance for add, remove and get operation they provide performance in O(log(n)) order.

TreeSet vs TreeMap in Java

Now let's see some differences between TreeSet vs TreeMap in Java:

1) Major difference between TreeSet and TreeMap is that TreeSet implements Set interface while TreeMap implements Map interface in Java.

2) Second difference between TreeMap and TreeSet is the way they store objects. TreeSet stores only one object while TreeMap uses two objects called key and Value. Objects in TreeSet are sorted while keys in TreeMap remain in sorted Order.

3) Third difference between TreeSet and TreeMap is that, former implements NavigableSet while later implements NavigableMap in Java.

4) Fourth difference is that duplicate objects are not allowed in TreeSet but duplicates values are allowed in TreeMap.

That's all on difference between TreeSet and TreeMap in Java. If you find any other significant difference between TreeMap and TreeSet then please post as comment.


  1. In the middle of reading several sources on this topic/classes, and your breakdown and explanation was very very helpful, thanks~Kb

  2. Hello Javin, What is difference between TreeMap and HashMap in Java, this was asked to me in my Java interview, would be glad if you could help me.

    1. TreeMap implemets the sorted Interface,while Hash map not implements the sorted interface.
      Treemap allows 'Homogenious' values as keys,where hash map not.

  3. Hi

    In your section:

    Similarities between TreeMap and TreeSet in Java

    You say both TreeSet and TreeMap implements Collection, is that true i think TreeMap which impelements Map is the only interface in the collections that does not implement Collection

    1. i think ,by mistake i has happened.

    2. You are correct Sachin and Anonymous, that's typo, corrected now. TreeMap implements Map interface, which is not a Collection.

  4. Collection inteface is extended by Set, List and Queue. Map interface doesn't extend Collection.

  5. treemap and treeset extends sortedset and sortedmap not navigablemap and navigableset