com.google.common.collect

## Class TreeRangeMap<K extends java.lang.Comparable,V>

- java.lang.Object
- - com.google.common.collect.TreeRangeMap<K,V>

- All Implemented Interfaces:
    RangeMap<K,V>

      @Beta
      @GwtIncompatible(value="NavigableMap")
      public final class TreeRangeMap<K extends java.lang.Comparable,V>
      extends java.lang.Object
      implements RangeMap<K,V>

  An implementation of `RangeMap` based on a `TreeMap`, supporting all optional operations.

  Like all `RangeMap` implementations, this supports neither null keys nor null values.

  Since:
    14.0

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.util.Map<Range<K>,V>` | `asDescendingMapOfRanges()` Returns a view of this range map as an unmodifiable `Map<Range<K>, V>`.
    `java.util.Map<Range<K>,V>` | `asMapOfRanges()` Returns a view of this range map as an unmodifiable `Map<Range<K>, V>`.
    `void` | `clear()` Removes all associations from this range map (optional operation).
    `static <K extends java.lang.Comparable,V> TreeRangeMap<K,V>` | `create()`
    `boolean` | `equals(java.lang.Object o)` Returns `true` if `obj` is another `RangeMap` that has an equivalent `RangeMap.asMapOfRanges()`.
    `V` | `get(K key)` Returns the value associated with the specified key, or `null` if there is no such value.
    `java.util.Map.Entry<Range<K>,V>` | `getEntry(K key)` Returns the range containing this key and its associated value, if such a range is present in the range map, or `null` otherwise.
    `int` | `hashCode()` Returns `asMapOfRanges().hashCode()`.
    `void` | `put(Range<K> range, V value)` Maps a range to a specified value (optional operation).
    `void` | `putAll(RangeMap<K,V> rangeMap)` Puts all the associations from `rangeMap` into this range map (optional operation).
    `void` | `remove(Range<K> rangeToRemove)` Removes all associations from this range map in the specified range (optional operation).
    `Range<K>` | `span()` Returns the minimal range enclosing the ranges in this `RangeMap`.
    `RangeMap<K,V>` | `subRangeMap(Range<K> subRange)` Returns a view of the part of this range map that intersects with `range`.
    `java.lang.String` | `toString()` Returns a readable string representation of this range map.

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Method Detail

    - #### create

          public static <K extends java.lang.Comparable,V> TreeRangeMap<K,V> create()

    - #### get

          @Nullable
          public V get(K key)

      Description copied from interface: `RangeMap`
      Returns the value associated with the specified key, or `null` if there is no such value.

      Specifically, if any range in this range map contains the specified key, the value associated with that range is returned.

      Specified by:
        `get` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### getEntry

          @Nullable
          public java.util.Map.Entry<Range<K>,V> getEntry(K key)

      Description copied from interface: `RangeMap`
      Returns the range containing this key and its associated value, if such a range is present in the range map, or `null` otherwise.
      Specified by:
        `getEntry` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### put

          public void put(Range<K> range,
                 V value)

      Description copied from interface: `RangeMap`
      Maps a range to a specified value (optional operation).

      Specifically, after a call to `put(range, value)`, if `range.contains(k)`, then `get(k)` will return `value`.

      If `range` is empty, then this is a no-op.

      Specified by:
        `put` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### putAll

          public void putAll(RangeMap<K,V> rangeMap)

      Description copied from interface: `RangeMap`
      Puts all the associations from `rangeMap` into this range map (optional operation).
      Specified by:
        `putAll` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### clear

          public void clear()

      Description copied from interface: `RangeMap`
      Removes all associations from this range map (optional operation).
      Specified by:
        `clear` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### span

          public Range<K> span()

      Description copied from interface: `RangeMap`
      Returns the minimal range enclosing the ranges in this `RangeMap`.
      Specified by:
        `span` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### remove

          public void remove(Range<K> rangeToRemove)

      Description copied from interface: `RangeMap`
      Removes all associations from this range map in the specified range (optional operation).

      If `!range.contains(k)`, `get(k)` will return the same result before and after a call to `remove(range)`. If `range.contains(k)`, then after a call to `remove(range)`, `get(k)` will return `null`.

      Specified by:
        `remove` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### asMapOfRanges

          public java.util.Map<Range<K>,V> asMapOfRanges()

      Description copied from interface: `RangeMap`
      Returns a view of this range map as an unmodifiable `Map<Range<K>, V>`. Modifications to this range map are guaranteed to read through to the returned `Map`.

      The returned `Map` iterates over entries in ascending order of the bounds of the `Range` entries.

      It is guaranteed that no empty ranges will be in the returned `Map`.

      Specified by:
        `asMapOfRanges` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### asDescendingMapOfRanges

          public java.util.Map<Range<K>,V> asDescendingMapOfRanges()

      Description copied from interface: `RangeMap`
      Returns a view of this range map as an unmodifiable `Map<Range<K>, V>`. Modifications to this range map are guaranteed to read through to the returned `Map`.

      The returned `Map` iterates over entries in descending order of the bounds of the `Range` entries.

      It is guaranteed that no empty ranges will be in the returned `Map`.

      Specified by:
        `asDescendingMapOfRanges` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### subRangeMap

          public RangeMap<K,V> subRangeMap(Range<K> subRange)

      Description copied from interface: `RangeMap`
      Returns a view of the part of this range map that intersects with `range`.

      For example, if `rangeMap` had the entries `[1, 5] => "foo", (6, 8) => "bar", (10, ‥) => "baz"` then `rangeMap.subRangeMap(Range.open(3, 12))` would return a range map with the entries `(3, 5) => "foo", (6, 8) => "bar", (10, 12) => "baz"`.

      The returned range map supports all optional operations that this range map supports, except for `asMapOfRanges().iterator().remove()`.

      The returned range map will throw an `IllegalArgumentException` on an attempt to insert a range not enclosed by `range`.

      Specified by:
        `subRangeMap` in interface `RangeMap<K extends java.lang.Comparable,V>`

    - #### equals

          public boolean equals(@Nullable
                       java.lang.Object o)

      Description copied from interface: `RangeMap`
      Returns `true` if `obj` is another `RangeMap` that has an equivalent `RangeMap.asMapOfRanges()`.
      Specified by:
        `equals` in interface `RangeMap<K extends java.lang.Comparable,V>`
      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public int hashCode()

      Description copied from interface: `RangeMap`
      Returns `asMapOfRanges().hashCode()`.
      Specified by:
        `hashCode` in interface `RangeMap<K extends java.lang.Comparable,V>`
      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### toString

          public java.lang.String toString()

      Description copied from interface: `RangeMap`
      Returns a readable string representation of this range map.
      Specified by:
        `toString` in interface `RangeMap<K extends java.lang.Comparable,V>`
      Overrides:
        `toString` in class `java.lang.Object`