TreeRangeSet
Date: 2016-05-24

com.google.common.collect

## Class TreeRangeSet<C extends java.lang.Comparable<?>>

- java.lang.Object
- - com.google.common.collect.TreeRangeSet<C>

- All Implemented Interfaces:
    RangeSet<C>

      @Beta
      @GwtIncompatible(value="uses NavigableMap")
      public class TreeRangeSet<C extends java.lang.Comparable<?>>
      extends java.lang.Object

  An implementation of `RangeSet` backed by a `TreeMap`.
  Since:
    14.0

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(Range<C> rangeToAdd)` Adds the specified range to this `RangeSet` (optional operation).
    `void` | `addAll(RangeSet<C> other)` Adds all of the ranges from the specified range set to this range set (optional operation).
    `java.util.Set<Range<C>>` | `asDescendingSetOfRanges()` Returns a descending view of the disconnected ranges that make up this range set.
    `java.util.Set<Range<C>>` | `asRanges()` Returns a view of the disconnected ranges that make up this range set.
    `void` | `clear()` Removes all ranges from this `RangeSet` (optional operation).
    `RangeSet<C>` | `complement()` Returns a view of the complement of this `RangeSet`.
    `boolean` | `contains(C value)` Determines whether any of this range set's member ranges contains `value`.
    `static <C extends java.lang.Comparable<?>> TreeRangeSet<C>` | `create()` Creates an empty `TreeRangeSet` instance.
    `static <C extends java.lang.Comparable<?>> TreeRangeSet<C>` | `create(RangeSet<C> rangeSet)` Returns a `TreeRangeSet` initialized with the ranges in the specified range set.
    `boolean` | `encloses(Range<C> range)` Returns `true` if there exists a member range in this range set which encloses the specified range.
    `boolean` | `enclosesAll(RangeSet<C> other)` Returns `true` if for each member range in `other` there exists a member range in this range set which encloses it.
    `boolean` | `equals(java.lang.Object obj)` Returns `true` if `obj` is another `RangeSet` that contains the same ranges according to `Range.equals(Object)`.
    `int` | `hashCode()` Returns `asRanges().hashCode()`.
    `boolean` | `isEmpty()` Returns `true` if this range set contains no ranges.
    `Range<C>` | `rangeContaining(C value)` Returns the unique range from this range set that contains `value`, or `null` if this range set does not contain `value`.
    `void` | `remove(Range<C> rangeToRemove)` Removes the specified range from this `RangeSet` (optional operation).
    `void` | `removeAll(RangeSet<C> other)` Removes all of the ranges from the specified range set from this range set (optional operation).
    `Range<C>` | `span()` Returns the minimal range which encloses all ranges in this range set.
    `RangeSet<C>` | `subRangeSet(Range<C> view)` Returns a view of the intersection of this `RangeSet` with the specified range.
    `java.lang.String` | `toString()` Returns a readable string representation of this range set.

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

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

- - ### Method Detail

    - #### create

          public static <C extends java.lang.Comparable<?>> TreeRangeSet<C> create()

      Creates an empty `TreeRangeSet` instance.

    - #### create

          public static <C extends java.lang.Comparable<?>> TreeRangeSet<C> create(RangeSet<C> rangeSet)

      Returns a `TreeRangeSet` initialized with the ranges in the specified range set.

    - #### asRanges

          public java.util.Set<Range<C>> asRanges()

      Description copied from interface: `RangeSet`
      Returns a view of the disconnected ranges that make up this range set. The returned set may be empty. The iterators returned by its `Iterable.iterator()` method return the ranges in increasing order of lower bound (equivalently, of upper bound).

    - #### asDescendingSetOfRanges

          public java.util.Set<Range<C>> asDescendingSetOfRanges()

      Description copied from interface: `RangeSet`
      Returns a descending view of the disconnected ranges that make up this range set. The returned set may be empty. The iterators returned by its `Iterable.iterator()` method return the ranges in decreasing order of lower bound (equivalently, of upper bound).

    - #### rangeContaining

          @Nullable
          public Range<C> rangeContaining(C value)

      Description copied from interface: `RangeSet`
      Returns the unique range from this range set that contains `value`, or `null` if this range set does not contain `value`.
      Specified by:
        `rangeContaining` in interface `RangeSet<C extends java.lang.Comparable<?>>`

    - #### encloses

          public boolean encloses(Range<C> range)

      Description copied from interface: `RangeSet`
      Returns `true` if there exists a member range in this range set which encloses the specified range.
      Specified by:
        `encloses` in interface `RangeSet<C extends java.lang.Comparable<?>>`

    - #### span

          public Range<C> span()

      Description copied from interface: `RangeSet`
      Returns the minimal range which encloses all ranges in this range set.

    - #### add

          public void add(Range<C> rangeToAdd)

      Description copied from interface: `RangeSet`
      Adds the specified range to this `RangeSet` (optional operation). That is, for equal range sets a and b, the result of `a.add(range)` is that `a` will be the minimal range set for which both `a.enclosesAll(b)` and `a.encloses(range)`.

      Note that `range` will be coalesced with any ranges in the range set that are connected with it. Moreover, if `range` is empty, this is a no-op.

      Specified by:
        `add` in interface `RangeSet<C extends java.lang.Comparable<?>>`

    - #### remove

          public void remove(Range<C> rangeToRemove)

      Description copied from interface: `RangeSet`
      Removes the specified range from this `RangeSet` (optional operation). After this operation, if `range.contains(c)`, `this.contains(c)` will return `false`.

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

      Specified by:
        `remove` in interface `RangeSet<C extends java.lang.Comparable<?>>`

    - #### complement

          public RangeSet<C> complement()

      Description copied from interface: `RangeSet`
      Returns a view of the complement of this `RangeSet`.

      The returned view supports the `RangeSet.add(com.google.common.collect.Range<C>)` operation if this `RangeSet` supports `RangeSet.remove(com.google.common.collect.Range<C>)`, and vice versa.

    - #### subRangeSet

          public RangeSet<C> subRangeSet(Range<C> view)

      Description copied from interface: `RangeSet`
      Returns a view of the intersection of this `RangeSet` with the specified range.

      The returned view supports all optional operations supported by this `RangeSet`, with the caveat that an `IllegalArgumentException` is thrown on an attempt to add any range not enclosed by `view`.

    - #### contains

          public boolean contains(C value)

      Description copied from interface: `RangeSet`
      Determines whether any of this range set's member ranges contains `value`.
      Specified by:
        `contains` in interface `RangeSet<C extends java.lang.Comparable>`

    - #### isEmpty

          public boolean isEmpty()

      Description copied from interface: `RangeSet`
      Returns `true` if this range set contains no ranges.
      Specified by:
        `isEmpty` in interface `RangeSet<C extends java.lang.Comparable>`

    - #### clear

          public void clear()

      Description copied from interface: `RangeSet`
      Removes all ranges from this `RangeSet` (optional operation). After this operation, `this.contains(c)` will return false for all `c`.

      This is equivalent to `remove(Range.all())`.

      Specified by:
        `clear` in interface `RangeSet<C extends java.lang.Comparable>`

    - #### enclosesAll

          public boolean enclosesAll(RangeSet<C> other)

      Description copied from interface: `RangeSet`
      Returns `true` if for each member range in `other` there exists a member range in this range set which encloses it. It follows that `this.contains(value)` whenever `other.contains(value)`. Returns `true` if `other` is empty.

      This is equivalent to checking if this range set `RangeSet.encloses(com.google.common.collect.Range<C>)` each of the ranges in `other`.

      Specified by:
        `enclosesAll` in interface `RangeSet<C extends java.lang.Comparable>`

    - #### addAll

          public void addAll(RangeSet<C> other)

      Description copied from interface: `RangeSet`
      Adds all of the ranges from the specified range set to this range set (optional operation). After this operation, this range set is the minimal range set that encloses both the original range set and `other`.

      This is equivalent to calling `RangeSet.add(com.google.common.collect.Range<C>)` on each of the ranges in `other` in turn.

      Specified by:
        `addAll` in interface `RangeSet<C extends java.lang.Comparable>`

    - #### removeAll

          public void removeAll(RangeSet<C> other)

      Description copied from interface: `RangeSet`
      Removes all of the ranges from the specified range set from this range set (optional operation). After this operation, if `other.contains(c)`, `this.contains(c)` will return `false`.

      This is equivalent to calling `RangeSet.remove(com.google.common.collect.Range<C>)` on each of the ranges in `other` in turn.

      Specified by:
        `removeAll` in interface `RangeSet<C extends java.lang.Comparable>`

    - #### equals

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

      Description copied from interface: `RangeSet`
      Returns `true` if `obj` is another `RangeSet` that contains the same ranges according to `Range.equals(Object)`.
      Specified by:
        `equals` in interface `RangeSet<C extends java.lang.Comparable>`
      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public final int hashCode()

      Description copied from interface: `RangeSet`
      Returns `asRanges().hashCode()`.
      Specified by:
        `hashCode` in interface `RangeSet<C extends java.lang.Comparable>`
      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### toString

          public final java.lang.String toString()

      Description copied from interface: `RangeSet`
      Returns a readable string representation of this range set. For example, if this `RangeSet` consisted of `Range.closed(1, 3)` and `Range.greaterThan(4)`, this might return `" [1‥3](4‥+∞)`"}.
      Specified by:
        `toString` in interface `RangeSet<C extends java.lang.Comparable>`
      Overrides:
        `toString` in class `java.lang.Object`