A SortedMap
is a Map
that maintains its entries in ascending order, sorted according to the keys‘ natural ordering, or according to a Comparator
provided at the time of the SortedMap
creation. Natural ordering and Comparator
s are discussed in the Object Ordering section. The SortedMap
interface provides operations for normal Map
operations and for the following:
Range view
— performs arbitrary range operations on the sorted mapEndpoints
— returns the first or the last key in the sorted mapComparator access
— returns theComparator
, if any, used to sort the map
The following interface is the Map
analog of SortedSet
.
public interface SortedMap<K, V> extends Map<K, V>{ Comparator<? super K> comparator(); SortedMap<K, V> subMap(K fromKey, K toKey); SortedMap<K, V> headMap(K toKey); SortedMap<K, V> tailMap(K fromKey); K firstKey(); K lastKey(); }
Map Operations
The operations SortedMap
inherits from Map
behave identically on sorted maps and normal maps with two exceptions:
- The
Iterator
returned by theiterator
operation on any of the sorted map‘sCollection
views traverse the collections in order. - The arrays returned by the
Collection
views‘toArray
operations contain the keys, values, or entries in order.
Although it isn‘t guaranteed by the interface, the toString
method of the Collection
views in all the Java platform‘s SortedMap
implementations returns a string containing all the elements of the view, in order.
Standard Constructors
By convention, all general-purpose Map
implementations provide a standard conversion constructor that takes a Map
; SortedMap
implementations are no exception. In TreeMap
, this constructor creates an instance that orders its entries according to their keys‘ natural ordering. This was probably a mistake. It would have been better to check dynamically to see whether the specified Map
instance was a SortedMap
and, if so, to sort the new map according to the same criterion (comparator or natural ordering). Because TreeMap
took the approach it did, it also provides a constructor that takes a SortedMap
and returns a new TreeMap
containing the same mappings as the given SortedMap
, sorted according to the same criterion. Note that it is the compile-time type of the argument, not its runtime type, that determines whether the SortedMap
constructor is invoked in preference to the ordinary map
constructor.
SortedMap
implementations also provide, by convention, a constructor that takes a Comparator
and returns an empty map sorted according to the specified Comparator
. If null
is passed to this constructor, it returns a Map
that sorts its mappings according to their keys‘ natural ordering.
Comparison to SortedSet
Because this interface is a precise Map
analog of SortedSet
, all the idioms and code examples in The SortedSet Interface section apply to SortedMap
with only trivial modifications.