Class TreeMap<K,V>

java.lang.Object
java.util.AbstractMap<K,V>
java.util.TreeMap<K,V>
Record Components:
type - of key
type -

of value

Since

1.2

All Implemented Interfaces:
Map<K,V>, NavigableMap<K,V>, SortedMap<K,V>

public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>
TreeMap is an implementation of SortedMap. All optional operations (adding and removing) are supported. The values can be any objects. The keys can be any objects which are comparable to each other either using their natural
  • Nested Class Summary

    Nested classes/interfaces inherited from class AbstractMap

    AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a new empty TreeMap instance.
    TreeMap(Comparator<? super K> comparator)
    Constructs a new empty TreeMap instance with the specified comparator.
    TreeMap(Map<? extends K, ? extends V> map)
    Constructs a new TreeMap instance containing the mappings from the specified map and using natural ordering.
    TreeMap(SortedMap<K, ? extends V> map)
    Constructs a new TreeMap instance containing the mappings from the specified SortedMap and using the same comparator.
  • Method Summary

    Modifier and Type
    Method
    Description
    Answers an entry related with the smallest key greater than or equal to the specified key, or null if no such key.
    Answers the smallest key greater than or equal to the specified key, or null if no such key.
    void
    Removes all mappings from this TreeMap, leaving it empty.
    Comparator<? super K>
    Returns the comparator used to compare elements in this map.
    boolean
    Returns whether this map contains the specified key.
    boolean
    Returns whether this map contains the specified value.
    Answers a NavigableSet view of the keys in descending order.
    Answers a reverse order view of the map.
    Returns a set containing all of the mappings in this map.
    Answers the entry with the smallest key, or null if the map is empty.
    Returns the first key in this map.
    Answers an entry related with the biggest key less than or equal to the specified key, or null if no such key.
    floorKey(K key)
    Answers the biggest key less than or equal to the specified key, or null if no such key.
    get(Object key)
    Returns the value of the mapping with the specified key.
    headMap(K endKey)
    Returns a sorted map over a range of this sorted map with all keys that are less than the specified endKey.
    headMap(K end, boolean inclusive)
    Answers a view of the head of the map whose keys are smaller than (or equal to, depends on inclusive argument) endKey.
    Answers an entry related with the smallest key greater than the specified key, or null if no such key.
    higherKey(K key)
    Answers the smallest key greater than the specified key, or null if no such key.
    Returns a set of the keys contained in this map.
    Answers the entry with the biggest key, or null if the map is empty.
    Returns the last key in this map.
    Answers an entry related with the biggest key less than the specified key, or null if no such key.
    lowerKey(K key)
    Answers the biggest key less than the specified key, or null if no such key.
    Answers a NavigableSet view of the keys in ascending order.
    Deletes and answers the entry with the smallest key, or null if the map is empty.
    Deletes and answers the entry with the biggest key, or null if the map is empty.
    put(K key, V value)
    Maps the specified key to the specified value.
    void
    putAll(Map<? extends K, ? extends V> map)
    Copies all the mappings in the given map to this map.
    Removes the mapping with the specified key from this map.
    int
    Returns the number of mappings in this map.
    subMap(K start, boolean startInclusive, K end, boolean endInclusive)
    Answers a view of part of the map whose keys is from startKey to endKey.
    subMap(K startKey, K endKey)
    Returns a sorted map over a range of this sorted map with all keys greater than or equal to the specified startKey and less than the specified endKey.
    tailMap(K startKey)
    Returns a sorted map over a range of this sorted map with all keys that are greater than or equal to the specified startKey.
    tailMap(K start, boolean inclusive)
    Answers a view of the tail of the map whose keys are bigger than (or equal to, depends on inclusive argument) startKey.
    Returns a collection of the values contained in this map.

    Methods inherited from class AbstractMap

    equals, hashCode, isEmpty, toString

    Methods inherited from class Object

    clone, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface Map

    equals, hashCode, isEmpty
  • Constructor Details

    • TreeMap

      public TreeMap()
      Constructs a new empty TreeMap instance.
    • TreeMap

      public TreeMap(Comparator<? super K> comparator)

      Constructs a new empty TreeMap instance with the specified comparator.

      Parameters
      • comparator: the comparator to compare keys with.
    • TreeMap

      public TreeMap(Map<? extends K, ? extends V> map)

      Constructs a new TreeMap instance containing the mappings from the specified map and using natural ordering.

      Parameters
      • map: the mappings to add.
      Throws
      • ClassCastException: @throws ClassCastException if a key in the specified map does not implement the Comparable interface, or if the keys in the map cannot be compared.
    • TreeMap

      public TreeMap(SortedMap<K, ? extends V> map)

      Constructs a new TreeMap instance containing the mappings from the specified SortedMap and using the same comparator.

      Parameters
      • map: the mappings to add.
  • Method Details

    • clear

      public void clear()

      Removes all mappings from this TreeMap, leaving it empty.

      See also
      • Map#isEmpty()

      • #size()

      Specified by:
      clear in interface Map<K,V>
      Overrides:
      clear in class AbstractMap<K,V>
    • comparator

      public Comparator<? super K> comparator()

      Returns the comparator used to compare elements in this map.

      Returns

      the comparator or null if the natural ordering is used.

      Specified by:
      comparator in interface SortedMap<K,V>
    • containsKey

      public boolean containsKey(Object key)

      Returns whether this map contains the specified key.

      Parameters
      • key: the key to search for.
      Returns
      Specified by:
      containsKey in interface Map<K,V>
      Overrides:
      containsKey in class AbstractMap<K,V>
      Returns:

      true if this map contains the specified key, false otherwise.

      Throws
      • ClassCastException: @throws ClassCastException if the specified key cannot be compared with the keys in this map.

      • NullPointerException: @throws NullPointerException if the specified key is null and the comparator cannot handle null keys.

    • containsValue

      public boolean containsValue(Object value)

      Returns whether this map contains the specified value.

      Parameters
      • value: the value to search for.
      Returns
      Specified by:
      containsValue in interface Map<K,V>
      Overrides:
      containsValue in class AbstractMap<K,V>
      Returns:
      true if this map contains the specified value, false otherwise.
    • firstKey

      public K firstKey()

      Returns the first key in this map.

      Returns

      the first key in this map.

      Throws
      • NoSuchElementException: if this map is empty.
      Specified by:
      firstKey in interface SortedMap<K,V>
    • get

      public V get(Object key)

      Returns the value of the mapping with the specified key.

      Parameters
      • key: the key.
      Returns

      the value of the mapping with the specified key.

      Throws
      • ClassCastException: if the key cannot be compared with the keys in this map.

      • NullPointerException: @throws NullPointerException if the key is null and the comparator cannot handle null.

      Specified by:
      get in interface Map<K,V>
      Overrides:
      get in class AbstractMap<K,V>
      Returns:
      the value of the mapping with the specified key, or null if no mapping for the specified key is found.
    • keySet

      public Set<K> keySet()

      Returns a set of the keys contained in this map. The set is backed by this map so changes to one are reflected by the other. The set does not support adding.

      Returns

      a set of the keys.

      Specified by:
      keySet in interface Map<K,V>
      Overrides:
      keySet in class AbstractMap<K,V>
    • lastKey

      public K lastKey()

      Returns the last key in this map.

      Returns

      the last key in this map.

      Throws
      • NoSuchElementException: if this map is empty.
      Specified by:
      lastKey in interface SortedMap<K,V>
    • put

      public V put(K key, V value)

      Maps the specified key to the specified value.

      Parameters
      • key: the key.

      • value: the value.

      Returns
      Specified by:
      put in interface Map<K,V>
      Overrides:
      put in class AbstractMap<K,V>
      Returns:

      the value of any previous mapping with the specified key or null if there was no mapping.

      Throws
      • ClassCastException: @throws ClassCastException if the specified key cannot be compared with the keys in this map.

      • NullPointerException: @throws NullPointerException if the specified key is null and the comparator cannot handle null keys.

    • putAll

      public void putAll(Map<? extends K, ? extends V> map)

      Copies all the mappings in the given map to this map. These mappings will replace all mappings that this map had for any of the keys currently in the given map.

      Parameters
      • map: the map to copy mappings from.
      Throws
      • ClassCastException: @throws ClassCastException if a key in the specified map cannot be compared with the keys in this map.

      • NullPointerException: @throws NullPointerException if a key in the specified map is null and the comparator cannot handle null keys.

      Specified by:
      putAll in interface Map<K,V>
      Overrides:
      putAll in class AbstractMap<K,V>
    • remove

      public V remove(Object key)

      Removes the mapping with the specified key from this map.

      Parameters
      • key: the key of the mapping to remove.
      Returns
      Specified by:
      remove in interface Map<K,V>
      Overrides:
      remove in class AbstractMap<K,V>
      Returns:

      the value of the removed mapping or null if no mapping for the specified key was found.

      Throws
      • ClassCastException: @throws ClassCastException if the specified key cannot be compared with the keys in this map.

      • NullPointerException: @throws NullPointerException if the specified key is null and the comparator cannot handle null keys.

    • size

      public int size()

      Returns the number of mappings in this map.

      Returns

      the number of mappings in this map.

      Specified by:
      size in interface Map<K,V>
      Overrides:
      size in class AbstractMap<K,V>
    • values

      public Collection<V> values()

      Returns a collection of the values contained in this map. The collection is backed by this map so changes to one are reflected by the other. The collection supports remove, removeAll, retainAll and clear operations, and it does not support add or addAll operations.

      This method returns a collection which is the subclass of AbstractCollection. The iterator method of this subclass returns a "wrapper object" over the iterator of map's entrySet(). The size method wraps the map's size method and the contains method wraps the map's containsValue method.

      The collection is created when this method is called for the first time and returned in response to all subsequent calls. This method may return different collections when multiple concurrent calls occur, since no synchronization is performed.

      Returns

      a collection of the values contained in this map.

      Specified by:
      values in interface Map<K,V>
      Overrides:
      values in class AbstractMap<K,V>
    • firstEntry

      public Map.Entry<K,V> firstEntry()

      Answers the entry with the smallest key, or null if the map is empty.

      Returns

      the entry with the smallest key, or null if the map is empty

      Since

      1.6

      See also
      • java.util.NavigableMap#firstEntry()
      Specified by:
      firstEntry in interface NavigableMap<K,V>
    • lastEntry

      public Map.Entry<K,V> lastEntry()

      Answers the entry with the biggest key, or null if the map is empty.

      Returns

      the entry with the biggest key, or null if the map is empty

      Since

      1.6

      See also
      • java.util.NavigableMap#lastEntry()
      Specified by:
      lastEntry in interface NavigableMap<K,V>
    • pollFirstEntry

      public Map.Entry<K,V> pollFirstEntry()

      Deletes and answers the entry with the smallest key, or null if the map is empty.

      Returns

      the entry with the smallest key, or null if the map is empty

      Since

      1.6

      See also
      • java.util.NavigableMap#pollFirstEntry()
      Specified by:
      pollFirstEntry in interface NavigableMap<K,V>
    • pollLastEntry

      public Map.Entry<K,V> pollLastEntry()

      Deletes and answers the entry with the biggest key, or null if the map is empty.

      Returns

      the entry with the biggest key, or null if the map is empty

      Since

      1.6

      See also
      • java.util.NavigableMap#pollLastEntry()
      Specified by:
      pollLastEntry in interface NavigableMap<K,V>
    • higherEntry

      public Map.Entry<K,V> higherEntry(K key)

      Answers an entry related with the smallest key greater than the specified key, or null if no such key.

      Parameters
      • key: the key
      Returns

      the entry, or null if no such key

      Throws
      • ClassCastException: if the key cannot be compared with the keys in the map

      • NullPointerException: if the key is null and the map can not contain null key

      Since

      1.6

      See also
      • java.util.NavigableMap#higherEntry(Object)
      Specified by:
      higherEntry in interface NavigableMap<K,V>
    • higherKey

      public K higherKey(K key)

      Answers the smallest key greater than the specified key, or null if no such key.

      Parameters
      • key: the key
      Returns

      the smallest key greater than key, or null if no such key

      Throws
      • ClassCastException: if the key cannot be compared with the keys in the map

      • NullPointerException: if the key is null and the map can not contain null key

      Since

      1.6

      See also
      • java.util.NavigableMap#higherKey(Object)
      Specified by:
      higherKey in interface NavigableMap<K,V>
    • lowerEntry

      public Map.Entry<K,V> lowerEntry(K key)

      Answers an entry related with the biggest key less than the specified key, or null if no such key.

      Parameters
      • key: the key
      Returns

      the entry, or null if no such key

      Throws
      • ClassCastException: if the key cannot be compared with the keys in the map

      • NullPointerException: if the key is null and the map can not contain null key

      Since

      1.6

      See also
      • java.util.NavigableMap#lowerEntry(Object)
      Specified by:
      lowerEntry in interface NavigableMap<K,V>
    • lowerKey

      public K lowerKey(K key)

      Answers the biggest key less than the specified key, or null if no such key.

      Parameters
      • key: the key
      Returns

      the biggest key less than key, or null if no such key

      Throws
      • ClassCastException: if the key cannot be compared with the keys in the map

      • NullPointerException: if the key is null and the map can not contain null key

      Since

      1.6

      See also
      • java.util.NavigableMap#lowerKey(Object)
      Specified by:
      lowerKey in interface NavigableMap<K,V>
    • ceilingEntry

      public Map.Entry<K,V> ceilingEntry(K key)

      Answers an entry related with the smallest key greater than or equal to the specified key, or null if no such key.

      Parameters
      • key: the key
      Returns

      the entry, or null if no such key

      Throws
      • ClassCastException: if the key cannot be compared with the keys in the map

      • NullPointerException: if the key is null and the map can not contain null key

      Since

      1.6

      See also
      • java.util.NavigableMap#ceilingEntry(java.lang.Object)
      Specified by:
      ceilingEntry in interface NavigableMap<K,V>
    • ceilingKey

      public K ceilingKey(K key)

      Answers the smallest key greater than or equal to the specified key, or null if no such key.

      Parameters
      • key: the key
      Returns
      Since

      1.6

      See also
      • java.util.NavigableMap#ceilingKey(java.lang.Object)
      Specified by:
      ceilingKey in interface NavigableMap<K,V>
      Returns:

      the smallest key greater than or equal to key, or null if no such key

      Throws
      • ClassCastException: if the key cannot be compared with the keys in the map

      • NullPointerException: if the key is null and the map can not contain null key

    • floorEntry

      public Map.Entry<K,V> floorEntry(K key)

      Answers an entry related with the biggest key less than or equal to the specified key, or null if no such key.

      Parameters
      • key: the key
      Returns

      the entry, or null if no such key

      Throws
      • ClassCastException: if the key cannot be compared with the keys in the map

      • NullPointerException: if the key is null and the map can not contain null key

      Since

      1.6

      See also
      • java.util.NavigableMap#floorEntry(Object)
      Specified by:
      floorEntry in interface NavigableMap<K,V>
    • floorKey

      public K floorKey(K key)

      Answers the biggest key less than or equal to the specified key, or null if no such key.

      Parameters
      • key: the key
      Returns

      the biggest key less than or equal to key, or null if no such key

      Throws
      • ClassCastException: if the key cannot be compared with the keys in the map

      • NullPointerException: if the key is null and the map can not contain null key

      Since

      1.6

      See also
      • java.util.NavigableMap#floorKey(Object)
      Specified by:
      floorKey in interface NavigableMap<K,V>
    • entrySet

      public Set<Map.Entry<K,V>> entrySet()

      Returns a set containing all of the mappings in this map. Each mapping is an instance of Map.Entry. As the set is backed by this map, changes in one will be reflected in the other. It does not support adding operations.

      Returns

      a set of the mappings.

      Specified by:
      entrySet in interface Map<K,V>
      Specified by:
      entrySet in class AbstractMap<K,V>
    • descendingKeySet

      public NavigableSet<K> descendingKeySet()

      Answers a NavigableSet view of the keys in descending order.

      Returns

      the navigable set view

      Since

      1.6

      See also
      • java.util.NavigableMap#descendingKeySet()
      Specified by:
      descendingKeySet in interface NavigableMap<K,V>
    • descendingMap

      public NavigableMap<K,V> descendingMap()

      Answers a reverse order view of the map.

      Returns

      the reverse order view of the map

      Since

      1.6

      See also
      • java.util.NavigableMap#descendingMap()
      Specified by:
      descendingMap in interface NavigableMap<K,V>
    • subMap

      public NavigableMap<K,V> subMap(K start, boolean startInclusive, K end, boolean endInclusive)

      Answers a view of part of the map whose keys is from startKey to endKey.

      Parameters
      • startKey: the start key

      • startInclusive: true if the start key is in the returned map

      • endKey: the end key

      • endInclusive: true if the end key is in the returned map

      Returns

      the sub-map view

      Throws
      • ClassCastException: @exception ClassCastException when the class of the start or end key is inappropriate for this SubMap

      • NullPointerException: @exception NullPointerException when the start or end key is null and this SortedMap does not support null keys

      • IllegalArgumentException: when the start key is greater than the end key

      Since

      1.6

      See also
      • java.util.NavigableMap#subMap(Object, boolean, Object, boolean)
      Specified by:
      subMap in interface NavigableMap<K,V>
    • headMap

      public NavigableMap<K,V> headMap(K end, boolean inclusive)

      Answers a view of the head of the map whose keys are smaller than (or equal to, depends on inclusive argument) endKey.

      Parameters
      • endKey: the end key

      • inclusive: true if the end key is in the returned map

      Returns

      the head-map view

      Throws
      • ClassCastException: @exception ClassCastException when the class of the end key is inappropriate for this SubMap

      • NullPointerException: @exception NullPointerException when the end key is null and this SortedMap does not support null keys

      • IllegalArgumentException: @exception IllegalArgumentException when the map is range-limited and end key is out of the range of the map

      Since

      1.6

      See also
      • java.util.NavigableMap#headMap(Object, boolean)
      Specified by:
      headMap in interface NavigableMap<K,V>
    • tailMap

      public NavigableMap<K,V> tailMap(K start, boolean inclusive)

      Answers a view of the tail of the map whose keys are bigger than (or equal to, depends on inclusive argument) startKey.

      Parameters
      • startKey: the start key

      • inclusive: true if the start key is in the returned map

      Returns

      the tail-map view

      Throws
      • ClassCastException: @exception ClassCastException when the class of the start key is inappropriate for this SubMap

      • NullPointerException: @exception NullPointerException when the start key is null and this SortedMap does not support null keys

      • IllegalArgumentException: @exception IllegalArgumentException when the map is range-limited and start key is out of the range of the map

      Since

      1.6

      See also
      • java.util.NavigableMap#tailMap(Object, boolean)
      Specified by:
      tailMap in interface NavigableMap<K,V>
    • subMap

      public SortedMap<K,V> subMap(K startKey, K endKey)

      Returns a sorted map over a range of this sorted map with all keys greater than or equal to the specified startKey and less than the specified endKey. Changes to the returned sorted map are reflected in this sorted map and vice versa.

      Note: The returned map will not allow an insertion of a key outside the specified range.

      Parameters
      • startKey: the low boundary of the range (inclusive).

      • endKey: the high boundary of the range (exclusive),

      Returns

      a sorted map with the key from the specified range.

      Throws
      • ClassCastException: @throws ClassCastException if the start or end key cannot be compared with the keys in this map.

      • NullPointerException: @throws NullPointerException if the start or end key is null and the comparator cannot handle null keys.

      • IllegalArgumentException: @throws IllegalArgumentException if the start key is greater than the end key, or if this map is itself a sorted map over a range of another sorted map and the specified range is outside of its range.

      Specified by:
      subMap in interface SortedMap<K,V>
    • headMap

      public SortedMap<K,V> headMap(K endKey)

      Returns a sorted map over a range of this sorted map with all keys that are less than the specified endKey. Changes to the returned sorted map are reflected in this sorted map and vice versa.

      Note: The returned map will not allow an insertion of a key outside the specified range.

      Parameters
      • endKey: the high boundary of the range specified.
      Returns

      a sorted map where the keys are less than endKey.

      Throws
      • ClassCastException: @throws ClassCastException if the specified key cannot be compared with the keys in this map.

      • NullPointerException: @throws NullPointerException if the specified key is null and the comparator cannot handle null keys.

      • IllegalArgumentException: @throws IllegalArgumentException if this map is itself a sorted map over a range of another map and the specified key is outside of its range.

      Specified by:
      headMap in interface SortedMap<K,V>
    • tailMap

      public SortedMap<K,V> tailMap(K startKey)

      Returns a sorted map over a range of this sorted map with all keys that are greater than or equal to the specified startKey. Changes to the returned sorted map are reflected in this sorted map and vice versa.

      Note: The returned map will not allow an insertion of a key outside the specified range.

      Parameters
      • startKey: the low boundary of the range specified.
      Returns
      Specified by:
      tailMap in interface SortedMap<K,V>
      Returns:

      a sorted map where the keys are greater or equal to startKey.

      Throws
      • ClassCastException: @throws ClassCastException if the specified key cannot be compared with the keys in this map.

      • NullPointerException: @throws NullPointerException if the specified key is null and the comparator cannot handle null keys.

      • IllegalArgumentException: @throws IllegalArgumentException if this map itself a sorted map over a range of another map and the specified key is outside of its range.