java.util
Class TreeMap

public class TreeMap<K, V>
extends AbstractMap<K, V>
implements Serializable, Cloneable, NavigableMap<K, V>
Type Parameters:
  • K - the type of keys maintained by this map
  • V - the type of mapped values
A Red-Black tree based NavigableMap implementation. The map is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time, depending on which constructor is used.

This implementation provides guaranteed log(n) time cost for the containsKey, get, put and remove operations. Algorithms are adaptations of those in Cormen, Leiserson, and Rivest's Introduction to Algorithms.

Note that the ordering maintained by a sorted map (whether or not an explicit comparator is provided) must be consistent with equals if this sorted map is to correctly implement the Map interface. (See Comparable or Comparator for a precise definition of consistent with equals.) This is so because the Map interface is defined in terms of the equals operation, but a map performs all key comparisons using its compareTo (or compare) method, so two keys that are deemed equal by this method are, from the standpoint of the sorted map, equal. The behavior of a sorted map is well-defined even if its ordering is inconsistent with equals; it just fails to obey the general contract of the Map interface.

Note that this implementation is not synchronized. If multiple threads access a map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more mappings; merely changing the value associated with an existing key is not a structural modification.) This is typically accomplished by synchronizing on some object that naturally encapsulates the map. If no such object exists, the map should be "wrapped" using the Collections.synchronizedSortedMap method. This is best done at creation time, to prevent accidental unsynchronized access to the map:

   SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));

The iterators returned by the iterator method of the collections returned by all of this class's "collection view methods" are fail-fast: if the map is structurally modified at any time after the iterator is created, in any way except through the iterator's own remove method, the iterator will throw a ConcurrentModificationException . Thus, in the face of concurrent modification, the iterator fails quickly and cleanly, rather than risking arbitrary, non-deterministic behavior at an undetermined time in the future.

Note that the fail-fast behavior of an iterator cannot be guaranteed as it is, generally speaking, impossible to make any hard guarantees in the presence of unsynchronized concurrent modification. Fail-fast iterators throw ConcurrentModificationException on a best-effort basis. Therefore, it would be wrong to write a program that depended on this exception for its correctness: the fail-fast behavior of iterators should be used only to detect bugs.

All Map.Entry pairs returned by methods in this class and its views represent snapshots of mappings at the time they were produced. They do not support the Entry.setValue method. (Note however that it is possible to change mappings in the associated map using put.)

This class is a member of the Java Collections Framework.

Since1.2
Version1.73, 05/10/06
AuthorJosh Bloch and Doug Lea
Wiki javadoc Use textile entry format.
Add your comments here.
Constructor Summary
TreeMap()
Constructs a new, empty tree map, using the natural ordering of its keys.
TreeMap( Comparator<? super K> comparator )
Constructs a new, empty tree map, ordered according to the given comparator.
TreeMap( Map<? extends K, ? extends V> m )
Constructs a new tree map containing the same mappings as the given map, ordered according to the natural ordering of its keys.
TreeMap( SortedMap<K, ? extends V> m )
Constructs a new tree map containing the same mappings and using the same ordering as the specified sorted map.
Method Summary
Map.Entry<K, V> ceilingEntry( K key )
No description provided.
K ceilingKey( K key )
No description provided.
void clear()
Removes all of the mappings from this map.
Object clone()
Returns a shallow copy of this TreeMap instance.
Comparator<? super K> comparator()
No description provided.
boolean containsKey( Object key )
Returns true if this map contains a mapping for the specified key.
boolean containsValue( Object value )
Returns true if this map maps one or more keys to the specified value.
NavigableSet<K> descendingKeySet()
No description provided.
NavigableMap<K, V> descendingMap()
No description provided.
Set<Map.Entry<K, V>> entrySet()
Returns a Set view of the mappings contained in this map.
Map.Entry<K, V> firstEntry()
No description provided.
K firstKey()
No description provided.
Map.Entry<K, V> floorEntry( K key )
No description provided.
K floorKey( K key )
No description provided.
V get( Object key )
Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key.
NavigableMap<K, V> headMap( K toKey, boolean inclusive )
No description provided.
SortedMap<K, V> headMap( K toKey )
No description provided.
Map.Entry<K, V> higherEntry( K key )
No description provided.
K higherKey( K key )
No description provided.
Set<K> keySet()
Returns a Set view of the keys contained in this map.
Map.Entry<K, V> lastEntry()
No description provided.
K lastKey()
No description provided.
Map.Entry<K, V> lowerEntry( K key )
No description provided.
K lowerKey( K key )
No description provided.
NavigableSet<K> navigableKeySet()
No description provided.
Map.Entry<K, V> pollFirstEntry()
No description provided.
Map.Entry<K, V> pollLastEntry()
No description provided.
V put( K key, V value )
Associates the specified value with the specified key in this map.
void putAll( Map<? extends K, ? extends V> map )
Copies all of the mappings from the specified map to this map.
V remove( Object key )
Removes the mapping for this key from this TreeMap if present.
int size()
Returns the number of key-value mappings in this map.
NavigableMap<K, V> subMap( K fromKey, boolean fromInclusive, K toKey, boolean toInclusive )
No description provided.
SortedMap<K, V> subMap( K fromKey, K toKey )
No description provided.
NavigableMap<K, V> tailMap( K fromKey, boolean inclusive )
No description provided.
SortedMap<K, V> tailMap( K fromKey )
No description provided.
Collection<V> values()
Returns a Collection view of the values contained in this map.
Methods inherited from java.utilMap
TreeMap
public TreeMap ( )
Constructs a new, empty tree map, using the natural ordering of its keys. All keys inserted into the map must implement the Comparable interface. Furthermore, all such keys must be mutually comparable: k1.compareTo(k2) must not throw a ClassCastException for any keys k1 and k2 in the map. If the user attempts to put a key into the map that violates this constraint (for example, the user attempts to put a string key into a map whose keys are integers), the put(Object key, Object value) call will throw a ClassCastException.
Wiki javadoc Use textile entry format.
Add your comments here.
TreeMap
public TreeMap ( Comparator<? super K> comparator )
Constructs a new, empty tree map, ordered according to the given comparator. All keys inserted into the map must be mutually comparable by the given comparator: comparator.compare(k1, k2) must not throw a ClassCastException for any keys k1 and k2 in the map. If the user attempts to put a key into the map that violates this constraint, the put(Object key, Object value) call will throw a ClassCastException.
Parameters
TypeNameDescription
Comparator<? super K> comparator the comparator that will be used to order this map. If null, the natural ordering of the keys will be used.
Wiki javadoc Use textile entry format.
Add your comments here.
TreeMap
public TreeMap ( Map<? extends K, ? extends V> m )
Constructs a new tree map containing the same mappings as the given map, ordered according to the natural ordering of its keys. All keys inserted into the new map must implement the Comparable interface. Furthermore, all such keys must be mutually comparable: k1.compareTo(k2) must not throw a ClassCastException for any keys k1 and k2 in the map. This method runs in n*log(n) time.
Parameters
TypeNameDescription
Map<? extends K, ? extends V> m the map whose mappings are to be placed in this map
Wiki javadoc Use textile entry format.
Add your comments here.
TreeMap
public TreeMap ( SortedMap<K, ? extends V> m )
Constructs a new tree map containing the same mappings and using the same ordering as the specified sorted map. This method runs in linear time.
Parameters
TypeNameDescription
SortedMap<K, ? extends V> m the sorted map whose mappings are to be placed in this map, and whose comparator is to be used to sort this map
Wiki javadoc Use textile entry format.
Add your comments here.
ceilingEntry
public Map.Entry<K, V> ceilingEntry ( K key )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K key No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
ceilingKey
public K ceilingKey ( K key )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K key No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
clear
public void clear ( )
Removes all of the mappings from this map. The map will be empty after this call returns.
Overrides method in AbstractMap
Returns void No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
clone
public Object clone ( )
Returns a shallow copy of this TreeMap instance. (The keys and values themselves are not cloned.)
Overrides method in AbstractMap
Wiki javadoc Use textile entry format.
Add your comments here.
comparator
public Comparator<? super K> comparator ( )
No description provided.
Implements method in SortedMap
Wiki javadoc Use textile entry format.
Add your comments here.
containsKey
public boolean containsKey ( Object key )
Returns true if this map contains a mapping for the specified key.
Overrides method in AbstractMap
Parameters
TypeNameDescription
Object key key whose presence in this map is to be tested
Wiki javadoc Use textile entry format.
Add your comments here.
containsValue
public boolean containsValue ( Object value )
Returns true if this map maps one or more keys to the specified value. More formally, returns true if and only if this map contains at least one mapping to a value v such that (value==null ? v==null : value.equals(v)). This operation will probably require time linear in the map size for most implementations.
Since: 1.2
Overrides method in AbstractMap
Parameters
TypeNameDescription
Object value value whose presence in this map is to be tested
Wiki javadoc Use textile entry format.
Add your comments here.
descendingKeySet
public NavigableSet<K> descendingKeySet ( )
No description provided.
Since: 1.6
Implements method in NavigableMap
Wiki javadoc Use textile entry format.
Add your comments here.
descendingMap
public NavigableMap<K, V> descendingMap ( )
No description provided.
Since: 1.6
Implements method in NavigableMap
Wiki javadoc Use textile entry format.
Add your comments here.
entrySet
public Set<Map.Entry<K, V>> entrySet ( )
Returns a Set view of the mappings contained in this map. The set's iterator returns the entries in ascending key order. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. If the map is modified while an iteration over the set is in progress (except through the iterator's own remove operation, or through the setValue operation on a map entry returned by the iterator) the results of the iteration are undefined. The set supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Set.remove, removeAll, retainAll and clear operations. It does not support the add or addAll operations.
Overrides method in AbstractMap
Wiki javadoc Use textile entry format.
Add your comments here.
firstEntry
public Map.Entry<K, V> firstEntry ( )
No description provided.
Since: 1.6
Implements method in NavigableMap
Wiki javadoc Use textile entry format.
Add your comments here.
firstKey
public K firstKey ( )
No description provided.
Implements method in SortedMap
Wiki javadoc Use textile entry format.
Add your comments here.
floorEntry
public Map.Entry<K, V> floorEntry ( K key )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K key No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
floorKey
public K floorKey ( K key )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K key No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
get
public V get ( Object key )
Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key.

More formally, if this map contains a mapping from a key k to a value v such that key compares equal to k according to the map's ordering, then this method returns v ; otherwise it returns null . (There can be at most one such mapping.)

A return value of null does not necessarily indicate that the map contains no mapping for the key; it's also possible that the map explicitly maps the key to null . The containsKey operation may be used to distinguish these two cases.

Overrides method in AbstractMap
Parameters
TypeNameDescription
Object key No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
headMap
public NavigableMap<K, V> headMap ( K toKey, boolean inclusive )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K toKey No description provided.
boolean inclusive No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
headMap
public SortedMap<K, V> headMap ( K toKey )
No description provided.
Implements method in SortedMap
Parameters
TypeNameDescription
K toKey No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
higherEntry
public Map.Entry<K, V> higherEntry ( K key )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K key No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
higherKey
public K higherKey ( K key )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K key No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
keySet
public Set<K> keySet ( )
Returns a Set view of the keys contained in this map. The set's iterator returns the keys in ascending order. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. If the map is modified while an iteration over the set is in progress (except through the iterator's own remove operation), the results of the iteration are undefined. The set supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Set.remove, removeAll, retainAll, and clear operations. It does not support the add or addAll operations.
Overrides method in AbstractMap
Wiki javadoc Use textile entry format.
Add your comments here.
lastEntry
public Map.Entry<K, V> lastEntry ( )
No description provided.
Since: 1.6
Implements method in NavigableMap
Wiki javadoc Use textile entry format.
Add your comments here.
lastKey
public K lastKey ( )
No description provided.
Implements method in SortedMap
Wiki javadoc Use textile entry format.
Add your comments here.
lowerEntry
public Map.Entry<K, V> lowerEntry ( K key )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K key No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
lowerKey
public K lowerKey ( K key )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K key No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
navigableKeySet
public NavigableSet<K> navigableKeySet ( )
No description provided.
Since: 1.6
Implements method in NavigableMap
Wiki javadoc Use textile entry format.
Add your comments here.
pollFirstEntry
public Map.Entry<K, V> pollFirstEntry ( )
No description provided.
Since: 1.6
Implements method in NavigableMap
Wiki javadoc Use textile entry format.
Add your comments here.
pollLastEntry
public Map.Entry<K, V> pollLastEntry ( )
No description provided.
Since: 1.6
Implements method in NavigableMap
Wiki javadoc Use textile entry format.
Add your comments here.
put
public V put ( K key, V value )
Associates the specified value with the specified key in this map. If the map previously contained a mapping for the key, the old value is replaced.
Overrides method in AbstractMap
Parameters
TypeNameDescription
K key key with which the specified value is to be associated
V value value to be associated with the specified key
Wiki javadoc Use textile entry format.
Add your comments here.
putAll
public void putAll ( Map<? extends K, ? extends V> map )
Copies all of the mappings from the specified map to this map. These mappings replace any mappings that this map had for any of the keys currently in the specified map.
Overrides method in AbstractMap
Parameters
TypeNameDescription
Map<? extends K, ? extends V> map mappings to be stored in this map
Returns void No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
remove
public V remove ( Object key )
Removes the mapping for this key from this TreeMap if present.
Overrides method in AbstractMap
Parameters
TypeNameDescription
Object key key for which mapping should be removed
Wiki javadoc Use textile entry format.
Add your comments here.
size
public int size ( )
Returns the number of key-value mappings in this map.
Overrides method in AbstractMap
Wiki javadoc Use textile entry format.
Add your comments here.
subMap
public NavigableMap<K, V> subMap ( K fromKey, boolean fromInclusive, K toKey, boolean toInclusive )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K fromKey No description provided.
boolean fromInclusive No description provided.
K toKey No description provided.
boolean toInclusive No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
subMap
public SortedMap<K, V> subMap ( K fromKey, K toKey )
No description provided.
Implements method in SortedMap
Parameters
TypeNameDescription
K fromKey No description provided.
K toKey No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
tailMap
public NavigableMap<K, V> tailMap ( K fromKey, boolean inclusive )
No description provided.
Since: 1.6
Implements method in NavigableMap
Parameters
TypeNameDescription
K fromKey No description provided.
boolean inclusive No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
tailMap
public SortedMap<K, V> tailMap ( K fromKey )
No description provided.
Implements method in SortedMap
Parameters
TypeNameDescription
K fromKey No description provided.
Wiki javadoc Use textile entry format.
Add your comments here.
values
public Collection<V> values ( )
Returns a Collection view of the values contained in this map. The collection's iterator returns the values in ascending order of the corresponding keys. The collection is backed by the map, so changes to the map are reflected in the collection, and vice-versa. If the map is modified while an iteration over the collection is in progress (except through the iterator's own remove operation), the results of the iteration are undefined. The collection supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Collection.remove, removeAll, retainAll and clear operations. It does not support the add or addAll operations.
Overrides method in AbstractMap
Wiki javadoc Use textile entry format.
Add your comments here.