Class ImmutableSet<E>
- All Implemented Interfaces:
Serializable,Iterable<E>,Collection<E>,Set<E>
- Direct Known Subclasses:
ImmutableEnumSet,ImmutableSet.CachingAsList,ImmutableSetMultimap.EntrySet,SingletonImmutableSet
Set whose contents will never change, with many other important properties detailed at
ImmutableCollection.- Since:
- 2.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classA builder for creatingImmutableSetinstances.(package private) static classprivate static final class(package private) static classprivate static final classSetBuilderImpl version that uses a JDK HashSet, which has built in hash flooding protection.private static final classDefault 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 classprivate static classSwappable internal implementation of an ImmutableSet.Builder. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final intprivate static final double(package private) static final int(package private) static final int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <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 intchooseTableSize(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>Constructs anImmutableSetfrom the firstnelements of the specified array.private static <E> ImmutableSet<E>constructUnknownDuplication(int n, Object... elements) Constructs anImmutableSetfrom the firstnelements of the specified array, which we have no particular reason to believe does or does not contain duplicates.static <E> ImmutableSet<E>copyOf(E[] elements) Returns an immutable set containing each ofelements, minus duplicates, in the order each appears first in the source array.static <E> ImmutableSet<E>Returns an immutable set containing each ofelements, minus duplicates, in the order each appears first in the source iterable.static <E> ImmutableSet<E>copyOf(Collection<? extends E> elements) Returns an immutable set containing each ofelements, minus duplicates, in the order each appears first in the source collection.static <E> ImmutableSet<E>Returns an immutable set containing each ofelements, minus duplicates, in the order each appears first in the source iterator.private static ImmutableSetcopyOfEnumSet(EnumSet enumSet) booleaninthashCode()(package private) booleanReturnstrueif thehashCode()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 containingelement.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.private voidreadObject(ObjectInputStream stream) static <E> Collector<E,?, ImmutableSet<E>> Returns aCollectorthat accumulates the input elements into a newImmutableSet.(package private) ObjectMethods inherited from class com.google.common.collect.ImmutableCollection
add, addAll, asList, clear, contains, copyIntoArray, internalArray, internalArrayEnd, internalArrayStart, isPartialView, remove, removeAll, removeIf, retainAll, spliterator, toArray, toArrayMethods inherited from class java.util.AbstractCollection
containsAll, isEmpty, size, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
-
Field Details
-
SPLITERATOR_CHARACTERISTICS
static final int SPLITERATOR_CHARACTERISTICS- See Also:
-
MAX_TABLE_SIZE
static final int MAX_TABLE_SIZE- See Also:
-
DESIRED_LOAD_FACTOR
private static final double DESIRED_LOAD_FACTOR- See Also:
-
CUTOFF
private static final int CUTOFF- See Also:
-
-
Constructor Details
-
ImmutableSet
ImmutableSet()
-
-
Method Details
-
toImmutableSet
Returns aCollectorthat accumulates the input elements into a newImmutableSet. Elements appear in the resulting set in the encounter order of the stream; if the stream contains duplicates (according toObject.equals(Object)), only the first duplicate in encounter order will appear in the result.- Since:
- 21.0
-
of
Returns the empty immutable set. Preferred overCollections.emptySet()for code consistency, and because the return type conveys the immutability guarantee.Performance note: the instance returned is a singleton.
-
of
Returns an immutable set containingelement. Preferred overCollections.singleton(T)for code consistency,nullrejection, and because the return type conveys the immutability guarantee. -
of
Returns an immutable set containing the given elements, minus duplicates, in the order each was first specified. That is, if multiple elements are equal, all except the first are ignored. -
of
Returns an immutable set containing the given elements, minus duplicates, in the order each was first specified. That is, if multiple elements are equal, all except the first are ignored. -
of
Returns an immutable set containing the given elements, minus duplicates, in the order each was first specified. That is, if multiple elements are equal, all except the first are ignored. -
of
Returns an immutable set containing the given elements, minus duplicates, in the order each was first specified. That is, if multiple elements are equal, all except the first are ignored. -
of
Returns an immutable set containing the given elements, minus duplicates, in the order each was first specified. That is, if multiple elements are equal, all except the first are ignored.The array
othersmust not be longer thanInteger.MAX_VALUE - 6.- Since:
- 3.0 (source-compatible since 2.0)
-
constructUnknownDuplication
Constructs anImmutableSetfrom the firstnelements of the specified array, which we have no particular reason to believe does or does not contain duplicates. Ifkis the size of the returnedImmutableSet, then the unique elements ofelementswill be in the firstkpositions, andelements[i] == nullfork <= i < n.This may modify
elements. Additionally, ifn == elements.lengthandelementscontains no duplicates,elementsmay be used without copying in the returnedImmutableSet, in which case the caller must not modify it.elementsmay contain only values of typeE.- Throws:
NullPointerException- if any of the firstnelements ofelementsis null
-
construct
Constructs anImmutableSetfrom the firstnelements of the specified array. Ifkis the size of the returnedImmutableSet, then the unique elements ofelementswill be in the firstkpositions, andelements[i] == nullfork <= i < n.This may modify
elements. Additionally, ifn == elements.lengthandelementscontains no duplicates,elementsmay be used without copying in the returnedImmutableSet, in which case it may no longer be modified.elementsmay contain only values of typeE.- Throws:
NullPointerException- if any of the firstnelements ofelementsis null
-
copyOf
Returns an immutable set containing each ofelements, 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.- Throws:
NullPointerException- if any ofelementsis null- Since:
- 7.0 (source-compatible since 2.0)
-
copyOf
Returns an immutable set containing each ofelements, minus duplicates, in the order each appears first in the source iterable. This method iterates overelementsonly 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.- Throws:
NullPointerException- if any ofelementsis null
-
copyOf
Returns an immutable set containing each ofelements, minus duplicates, in the order each appears first in the source iterator.- Throws:
NullPointerException- if any ofelementsis null
-
copyOf
Returns an immutable set containing each ofelements, minus duplicates, in the order each appears first in the source array.- Throws:
NullPointerException- if any ofelementsis null- Since:
- 3.0
-
copyOfEnumSet
-
isHashCodeFast
boolean isHashCodeFast()Returnstrueif thehashCode()method runs quickly. -
equals
-
hashCode
public int hashCode() -
iterator
Description copied from class:ImmutableCollectionReturns an unmodifiable iterator across the elements in this collection. -
writeReplace
Object writeReplace()- Overrides:
writeReplacein classImmutableCollection<E>
-
readObject
- Throws:
InvalidObjectException
-
builder
Returns a new builder. The generated builder is equivalent to the builder created by theImmutableSet.Builderconstructor. -
builderWithExpectedSize
Returns a new builder, expecting the specified number of distinct elements to be added.If
expectedSizeis exactly the number of distinct elements added to the builder beforeImmutableSet.Builder.build()is called, the builder is likely to perform better than an unsizedbuilder()would have.It is not specified if any performance benefits apply if
expectedSizeis close to, but not exactly, the number of distinct elements added to the builder.- Since:
- 23.1
-
chooseTableSize
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. The returned size is the smallest power of two that can hold setSize elements with the desired load factor. Always returns at least setSize + 2.
-