Java – SortedMap interface

In this article, we will discuss SortedMap interface with all its important methods in detail

1. Key points about SortedMap :

  • SortedMap doesn’t allow duplicate keys
  • Stores Key-Value pairs based on sorting-order
  • Sorting-order could be either natural-ordering or customized-ordering

2. SortedMap interface :

  • SortedMap interface is a sub-interface of Map interface (i.e.; SortedMap extends Map)
  • To represent a group of key-value pairs as a single unit/entity, where duplicate keys aren’t allowed and keys are stored according to some sorting-order
  • SortedMap allows only unique keys to be inserted
  • SortedMap stores key-value pairs in sorting-order on the basis of keys only, not values
  • SortedMap interface defines 6 specific methods in addition to inherited methods from Map interface
  • Present in java.util package and extends java.util.Map interface

Source: Team BenchResources.Net

3. SortedMap interface methods :

 SortedMap methodDescription
Object firstKey();returns 1st key in the invoking Map
Object lastKey();returns last key in the invoking Map
SortedMap headMap(Object obj);returns SortedMap for those map entries, whose keys are less than specified object
i.e.; from SortedMap’s start to (obj -1)
SortedMap tailMap(Object obj);returns SortedMap for those map entries, whose keys are greater than or equal to specified object


i.e.; from SortedMap’s obj to (end -1)

SortedMap subMap(Object obj1, Object obj2);returns SortedMap containing those map entries, whose keys range is starting from obj1 to obj2-1


i.e.; from stat to end-1; start inclusive & end exclusive (obj1 >= keys < obj2)

Comparator comparator();returns SortedMap’s comparator object


returns null, if SortedMap uses Natural Sorting

4. Example to understand SortedMap specific method :

  • SortedMap = [10-Alpha, 20-Beta, 30-Gamma, 40-delta, 50-epsilon, 60-lambda, 70-mu];
  • firstKey() = 10
  • lastKey() = 70
  • headMap(40) =[10-Alpha, 20-Beta, 30-Gamma]
  • tailMap(40) =[40-delta, 50-epsilon, 60-lambda, 70-mu]
  • subMap(20, 70) =[20-Beta, 30-Gamma, 40-delta, 50-epsilon, 60-lambda]
  • comparator() = null; as it uses default natural sorting order

5. SortedMap example :


import java.util.SortedMap;
import java.util.TreeMap;

public class SortedMapMethods {

	public static void main(String[] args) {

		// creating SortedMap reference and TreeMap object
		SortedMap<Integer, String> sm = new TreeMap<Integer, String>();

		// adding key-value pairs to SortedMap/TreeMap object
		sm.put(3, "Yahoo");
		sm.put(4, "Amazon");
		sm.put(7, "Twiter");
		sm.put(1, "Google");
		sm.put(5, "Reddit");
		sm.put(6, "LinkedIn");
		sm.put(2, "Facebook");

		System.out.println("Elements will be Sorted "
				+ "acc to Natural ordering:\n");

		// SortedMap method operation
		System.out.println("\nFirst element of SortedMap : "
				+ sm.firstKey());
		System.out.println("\nLast element of SortedMap : "
				+ sm.lastKey());
		System.out.println("\nHead Map of 4th position : "
				+ sm.headMap(4));
		System.out.println("\nTail Map of 4th position : "
				+ sm.tailMap(4));
		System.out.println("\nSub Map between 2 &amp; 7 : "
				+ sm.subMap(2,7));


Elements will be Sorted acc to Natural ordering:

{1=Google, 2=Facebook, 3=Yahoo, 4=Amazon, 5=Reddit, 6=LinkedIn, 7=Twiter}

First element of SortedMap : 1

Last element of SortedMap : 7

Head Map of 4th position : {1=Google, 2=Facebook, 3=Yahoo}

Tail Map of 4th position : {4=Amazon, 5=Reddit, 6=LinkedIn, 7=Twiter}

Sub Map between 2 & 7 : {2=Facebook, 3=Yahoo, 4=Amazon, 5=Reddit,

Note: All methods of SortedMap is non-synchronized

Q) How to make SortedMap synchronized ?

Map map = Collections.synchronizedMap(sm);

6. Class or interface that extends/implements SortedMap interface :

  • NavigableMap interface extends SortedMap interface
  • TreeMap class implements NavigableMap interface

7. Factors to consider while discussing any collection class :

We should consider below factors while discussing any implementation class of collection framework or for that matter Map interface,

  • Underlying data structure
  • Duplicates are allowed or Not
  • Insertion order is maintained or Not
  • Whether NULL insertion is possible or Not
  • If possible, how many NULL values can be inserted
  • Whether collection class provide sorting, by default
  • Is there any way to apply customized sorting
  • Performance, while dealing with retrieval or manipulation (addition/deletion)
  • By default, all methods are synchronized or Not

Related Articles :


Happy Coding !!
Happy Learning !!

Java 6 - NavigableMap interface
Java - WeakHashMap class with example