@Beta @GwtIncompatible public final class ImmutableRangeSet<C extends java.lang.Comparable> extends AbstractRangeSet<C> implements java.io.Serializable
RangeSet
whose contents will never change, with many other important properties
detailed at ImmutableCollection
.Modifier and Type | Class and Description |
---|---|
private class |
ImmutableRangeSet.AsSet |
private static class |
ImmutableRangeSet.AsSetSerializedForm<C extends java.lang.Comparable> |
static class |
ImmutableRangeSet.Builder<C extends java.lang.Comparable<?>>
A builder for immutable range sets.
|
private class |
ImmutableRangeSet.ComplementRanges |
private static class |
ImmutableRangeSet.SerializedForm<C extends java.lang.Comparable> |
Modifier and Type | Field and Description |
---|---|
private static ImmutableRangeSet<java.lang.Comparable<?>> |
ALL |
private ImmutableRangeSet<C> |
complement |
private static ImmutableRangeSet<java.lang.Comparable<?>> |
EMPTY |
private ImmutableList<Range<C>> |
ranges |
Modifier | Constructor and Description |
---|---|
(package private) |
ImmutableRangeSet(ImmutableList<Range<C>> ranges) |
private |
ImmutableRangeSet(ImmutableList<Range<C>> ranges,
ImmutableRangeSet<C> complement) |
Modifier and Type | Method and Description |
---|---|
void |
add(Range<C> range)
Deprecated.
Unsupported operation.
|
void |
addAll(RangeSet<C> other)
Deprecated.
Unsupported operation.
|
(package private) static <C extends java.lang.Comparable> |
all()
Returns an immutable range set containing the single range
Range.all() . |
ImmutableSet<Range<C>> |
asDescendingSetOfRanges()
Returns a descending view of the disconnected ranges that
make up this range set.
|
ImmutableSet<Range<C>> |
asRanges()
Returns a view of the disconnected ranges that make up this
range set.
|
ImmutableSortedSet<C> |
asSet(DiscreteDomain<C> domain)
Returns an
ImmutableSortedSet containing the same values in the given domain
contained by this range set. |
static <C extends java.lang.Comparable<?>> |
builder()
Returns a new builder for an immutable range set.
|
ImmutableRangeSet<C> |
complement()
Returns a view of the complement of this
RangeSet . |
static <C extends java.lang.Comparable> |
copyOf(RangeSet<C> rangeSet)
Returns an immutable copy of the specified
RangeSet . |
boolean |
encloses(Range<C> otherRange)
Returns
true if there exists a member range in this range set which
encloses the specified range. |
private ImmutableList<Range<C>> |
intersectRanges(Range<C> range)
Returns a list containing the nonempty intersections of
range
with the ranges in this range set. |
boolean |
intersects(Range<C> otherRange)
Returns
true if there exists a non-empty range enclosed by both a member range in this
range set and the specified range. |
boolean |
isEmpty()
Returns
true if this range set contains no ranges. |
(package private) boolean |
isPartialView()
Returns
true if this immutable range set's implementation contains references to
user-created objects that aren't accessible via this range set's methods. |
static <C extends java.lang.Comparable> |
of()
Returns an empty immutable range set.
|
static <C extends java.lang.Comparable> |
of(Range<C> range)
Returns an immutable range set containing the specified single range.
|
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> range)
Deprecated.
Unsupported operation.
|
void |
removeAll(RangeSet<C> other)
Deprecated.
Unsupported operation.
|
Range<C> |
span()
Returns the minimal range which encloses all ranges
in this range set.
|
ImmutableRangeSet<C> |
subRangeSet(Range<C> range)
Returns a view of the intersection of this range set with the given range.
|
(package private) java.lang.Object |
writeReplace() |
clear, contains, enclosesAll, equals, hashCode, toString
private static final ImmutableRangeSet<java.lang.Comparable<?>> EMPTY
private static final ImmutableRangeSet<java.lang.Comparable<?>> ALL
private final transient ImmutableList<Range<C extends java.lang.Comparable>> ranges
private transient ImmutableRangeSet<C extends java.lang.Comparable> complement
ImmutableRangeSet(ImmutableList<Range<C>> ranges)
private ImmutableRangeSet(ImmutableList<Range<C>> ranges, ImmutableRangeSet<C> complement)
public static <C extends java.lang.Comparable> ImmutableRangeSet<C> of()
static <C extends java.lang.Comparable> ImmutableRangeSet<C> all()
Range.all()
.public static <C extends java.lang.Comparable> ImmutableRangeSet<C> of(Range<C> range)
range.isEmpty()
, this is equivalent to of()
.public static <C extends java.lang.Comparable> ImmutableRangeSet<C> copyOf(RangeSet<C> rangeSet)
RangeSet
.public boolean intersects(Range<C> otherRange)
RangeSet
true
if there exists a non-empty range enclosed by both a member range in this
range set and the specified range. This is equivalent to calling
subRangeSet(otherRange)
and testing whether the resulting range set is non-empty.intersects
in interface RangeSet<C extends java.lang.Comparable>
intersects
in class AbstractRangeSet<C extends java.lang.Comparable>
public boolean encloses(Range<C> otherRange)
RangeSet
true
if there exists a member range in this range set which
encloses the specified range.public Range<C> rangeContaining(C value)
RangeSet
value
, or null
if this range set does not contain value
.rangeContaining
in interface RangeSet<C extends java.lang.Comparable>
rangeContaining
in class AbstractRangeSet<C extends java.lang.Comparable>
public Range<C> span()
RangeSet
public boolean isEmpty()
RangeSet
true
if this range set contains no ranges.@Deprecated public void add(Range<C> range)
RangeSet
unmodified.@Deprecated public void addAll(RangeSet<C> other)
RangeSet
unmodified.@Deprecated public void remove(Range<C> range)
RangeSet
unmodified.@Deprecated public void removeAll(RangeSet<C> other)
RangeSet
unmodified.public ImmutableSet<Range<C>> asRanges()
RangeSet
Iterable.iterator()
method return the ranges in increasing order of lower bound
(equivalently, of upper bound).public ImmutableSet<Range<C>> asDescendingSetOfRanges()
RangeSet
Iterable.iterator()
method return the ranges in decreasing order of lower bound
(equivalently, of upper bound).asDescendingSetOfRanges
in interface RangeSet<C extends java.lang.Comparable>
public ImmutableRangeSet<C> complement()
RangeSet
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.
complement
in interface RangeSet<C extends java.lang.Comparable>
private ImmutableList<Range<C>> intersectRanges(Range<C> range)
range
with the ranges in this range set.public ImmutableRangeSet<C> subRangeSet(Range<C> range)
subRangeSet
in interface RangeSet<C extends java.lang.Comparable>
public ImmutableSortedSet<C> asSet(DiscreteDomain<C> domain)
ImmutableSortedSet
containing the same values in the given domain
contained by this range set.
Note: a.asSet(d).equals(b.asSet(d))
does not imply a.equals(b)
! For
example, a
and b
could be [2..4]
and (1..5)
, or the empty
ranges [3..3)
and [4..4)
.
Warning: Be extremely careful what you do with the asSet
view of a large
range set (such as ImmutableRangeSet.of(Range.greaterThan(0))
). Certain operations on
such a set can be performed efficiently, but others (such as Set.hashCode()
or
Collections.frequency(java.util.Collection<?>, java.lang.Object)
) can cause major performance problems.
The returned set's Object.toString()
method returns a short-hand form of the set's
contents, such as "[1..100]
"}.
java.lang.IllegalArgumentException
- if neither this range nor the domain has a lower bound, or if
neither has an upper boundboolean isPartialView()
true
if this immutable range set's implementation contains references to
user-created objects that aren't accessible via this range set's methods. This is generally
used to determine whether copyOf
implementations should make an explicit copy to avoid
memory leaks.public static <C extends java.lang.Comparable<?>> ImmutableRangeSet.Builder<C> builder()
java.lang.Object writeReplace()