public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements java.util.Set<E>
Set
whose contents will never change, with many other important properties detailed at
ImmutableCollection
.Modifier and Type | Class and Description |
---|---|
static class |
ImmutableSet.Builder<E>
A builder for creating
ImmutableSet instances. |
(package private) static class |
ImmutableSet.CachingAsList<E> |
private static class |
ImmutableSet.EmptySetBuilderImpl<E> |
(package private) static class |
ImmutableSet.Indexed<E> |
private static class |
ImmutableSet.JdkBackedSetBuilderImpl<E>
SetBuilderImpl version that uses a JDK HashSet, which has built in hash flooding protection.
|
private static class |
ImmutableSet.RegularSetBuilderImpl<E>
Default implementation of the guts of ImmutableSet.Builder, creating an open-addressed hash
table and deduplicating elements as they come, so it only allocates O(max(distinct,
expectedCapacity)) rather than O(calls to add).
|
private static class |
ImmutableSet.SerializedForm |
private static class |
ImmutableSet.SetBuilderImpl<E>
Swappable internal implementation of an ImmutableSet.Builder.
|
Modifier and Type | Field and Description |
---|---|
private static int |
CUTOFF |
private static double |
DESIRED_LOAD_FACTOR |
(package private) static int |
MAX_TABLE_SIZE |
(package private) static int |
SPLITERATOR_CHARACTERISTICS |
Constructor and Description |
---|
ImmutableSet() |
Modifier and Type | Method and Description |
---|---|
static <E> ImmutableSet.Builder<E> |
builder()
Returns a new builder.
|
static <E> ImmutableSet.Builder<E> |
builderWithExpectedSize(int expectedSize)
Returns a new builder, expecting the specified number of distinct elements to be added.
|
(package private) static int |
chooseTableSize(int setSize)
Returns an array size suitable for the backing array of a hash table that uses open addressing
with linear probing in its implementation.
|
private static <E> ImmutableSet<E> |
construct(int n,
int expectedSize,
java.lang.Object... elements)
Constructs an
ImmutableSet from the first n elements of the specified array. |
private static <E> ImmutableSet<E> |
constructUnknownDuplication(int n,
java.lang.Object... elements)
Constructs an
ImmutableSet from the first n elements of the specified array,
which we have no particular reason to believe does or does not contain duplicates. |
static <E> ImmutableSet<E> |
copyOf(java.util.Collection<? extends E> elements)
Returns an immutable set containing each of
elements , minus duplicates, in the order
each appears first in the source collection. |
static <E> ImmutableSet<E> |
copyOf(E[] elements)
Returns an immutable set containing each of
elements , minus duplicates, in the order
each appears first in the source array. |
static <E> ImmutableSet<E> |
copyOf(java.lang.Iterable<? extends E> elements)
Returns an immutable set containing each of
elements , minus duplicates, in the order
each appears first in the source iterable. |
static <E> ImmutableSet<E> |
copyOf(java.util.Iterator<? extends E> elements)
Returns an immutable set containing each of
elements , minus duplicates, in the order
each appears first in the source iterator. |
private static ImmutableSet |
copyOfEnumSet(java.util.EnumSet enumSet) |
boolean |
equals(java.lang.Object object) |
int |
hashCode() |
(package private) boolean |
isHashCodeFast()
Returns
true if the hashCode() method runs quickly. |
abstract UnmodifiableIterator<E> |
iterator()
Returns an unmodifiable iterator across the elements in this collection.
|
static <E> ImmutableSet<E> |
of()
Returns the empty immutable set.
|
static <E> ImmutableSet<E> |
of(E element)
Returns an immutable set containing
element . |
static <E> ImmutableSet<E> |
of(E e1,
E e2)
Returns an immutable set containing the given elements, minus duplicates, in the order each was
first specified.
|
static <E> ImmutableSet<E> |
of(E e1,
E e2,
E e3)
Returns an immutable set containing the given elements, minus duplicates, in the order each was
first specified.
|
static <E> ImmutableSet<E> |
of(E e1,
E e2,
E e3,
E e4)
Returns an immutable set containing the given elements, minus duplicates, in the order each was
first specified.
|
static <E> ImmutableSet<E> |
of(E e1,
E e2,
E e3,
E e4,
E e5)
Returns an immutable set containing the given elements, minus duplicates, in the order each was
first specified.
|
static <E> ImmutableSet<E> |
of(E e1,
E e2,
E e3,
E e4,
E e5,
E e6,
E... others)
Returns an immutable set containing the given elements, minus duplicates, in the order each was
first specified.
|
static <E> java.util.stream.Collector<E,?,ImmutableSet<E>> |
toImmutableSet()
Returns a
Collector that accumulates the input elements into a new ImmutableSet . |
(package private) java.lang.Object |
writeReplace() |
add, addAll, asList, clear, contains, copyIntoArray, internalArray, internalArrayEnd, internalArrayStart, isPartialView, remove, removeAll, removeIf, retainAll, spliterator, toArray, toArray
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
static final int SPLITERATOR_CHARACTERISTICS
static final int MAX_TABLE_SIZE
private static final double DESIRED_LOAD_FACTOR
private static final int CUTOFF
public static <E> java.util.stream.Collector<E,?,ImmutableSet<E>> toImmutableSet()
Collector
that accumulates the input elements into a new ImmutableSet
. Elements appear in the resulting set in the encounter order of the stream; if
the stream contains duplicates (according to Object.equals(Object)
), only the first
duplicate in encounter order will appear in the result.public static <E> ImmutableSet<E> of()
Collections.emptySet()
for code
consistency, and because the return type conveys the immutability guarantee.
Performance note: the instance returned is a singleton.
public static <E> ImmutableSet<E> of(E element)
element
. Preferred over Collections.singleton(T)
for code consistency, null
rejection, and because the return
type conveys the immutability guarantee.public static <E> ImmutableSet<E> of(E e1, E e2)
public static <E> ImmutableSet<E> of(E e1, E e2, E e3)
public static <E> ImmutableSet<E> of(E e1, E e2, E e3, E e4)
public static <E> ImmutableSet<E> of(E e1, E e2, E e3, E e4, E e5)
@SafeVarargs public static <E> ImmutableSet<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E... others)
The array others
must not be longer than Integer.MAX_VALUE - 6
.
private static <E> ImmutableSet<E> constructUnknownDuplication(int n, java.lang.Object... elements)
ImmutableSet
from the first n
elements of the specified array,
which we have no particular reason to believe does or does not contain duplicates. If k
is the size of the returned ImmutableSet
, then the unique elements of elements
will be in the first k
positions, and elements[i] == null
for k <= i <
n
.
This may modify elements
. Additionally, if n == elements.length
and elements
contains no duplicates, elements
may be used without copying in the returned
ImmutableSet
, in which case the caller must not modify it.
elements
may contain only values of type E
.
java.lang.NullPointerException
- if any of the first n
elements of elements
is nullprivate static <E> ImmutableSet<E> construct(int n, int expectedSize, java.lang.Object... elements)
ImmutableSet
from the first n
elements of the specified array. If
k
is the size of the returned ImmutableSet
, then the unique elements of elements
will be in the first k
positions, and elements[i] == null
for k <= i < n
.
This may modify elements
. Additionally, if n == elements.length
and elements
contains no duplicates, elements
may be used without copying in the returned
ImmutableSet
, in which case it may no longer be modified.
elements
may contain only values of type E
.
java.lang.NullPointerException
- if any of the first n
elements of elements
is nullpublic static <E> ImmutableSet<E> copyOf(java.util.Collection<? extends E> elements)
elements
, minus duplicates, in the order
each appears first in the source collection.
Performance note: This method will sometimes recognize that the actual copy operation
is unnecessary; for example, copyOf(copyOf(anArrayList))
will copy the data only once.
This reduces the expense of habitually making defensive copies at API boundaries. However, the
precise conditions for skipping the copy operation are undefined.
java.lang.NullPointerException
- if any of elements
is nullpublic static <E> ImmutableSet<E> copyOf(java.lang.Iterable<? extends E> elements)
elements
, minus duplicates, in the order
each appears first in the source iterable. This method iterates over elements
only
once.
Performance note: This method will sometimes recognize that the actual copy operation
is unnecessary; for example, copyOf(copyOf(anArrayList))
should copy the data only
once. This reduces the expense of habitually making defensive copies at API boundaries.
However, the precise conditions for skipping the copy operation are undefined.
java.lang.NullPointerException
- if any of elements
is nullpublic static <E> ImmutableSet<E> copyOf(java.util.Iterator<? extends E> elements)
elements
, minus duplicates, in the order
each appears first in the source iterator.java.lang.NullPointerException
- if any of elements
is nullpublic static <E> ImmutableSet<E> copyOf(E[] elements)
elements
, minus duplicates, in the order
each appears first in the source array.java.lang.NullPointerException
- if any of elements
is nullprivate static ImmutableSet copyOfEnumSet(java.util.EnumSet enumSet)
boolean isHashCodeFast()
true
if the hashCode()
method runs quickly.public boolean equals(@CheckForNull java.lang.Object object)
public int hashCode()
public abstract UnmodifiableIterator<E> iterator()
ImmutableCollection
java.lang.Object writeReplace()
writeReplace
in class ImmutableCollection<E>
public static <E> ImmutableSet.Builder<E> builder()
ImmutableSet.Builder
constructor.public static <E> ImmutableSet.Builder<E> builderWithExpectedSize(int expectedSize)
If expectedSize
is exactly the number of distinct elements added to the builder
before ImmutableSet.Builder.build()
is called, the builder is likely to perform better than an unsized
builder()
would have.
It is not specified if any performance benefits apply if expectedSize
is close to,
but not exactly, the number of distinct elements added to the builder.
static int chooseTableSize(int setSize)