Class ImmutableSet<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- com.google.common.collect.ImmutableCollection<E>
-
- com.google.common.collect.ImmutableSet<E>
-
- All Implemented Interfaces:
Serializable
,Iterable<E>
,Collection<E>
,Set<E>
- Direct Known Subclasses:
ImmutableSortedSet
@GwtCompatible(serializable=true, emulated=true) public abstract class ImmutableSet<E> extends ImmutableCollection<E> implements Set<E>
ASet
whose contents will never change, with many other important properties detailed atImmutableCollection
.- Since:
- 2.0
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ImmutableSet.Builder<E>
A builder for creatingImmutableSet
instances.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description ImmutableList<E>
asList()
Returns anImmutableList
containing the same elements, in the same order, as this collection.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.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>
copyOf(Iterable<? extends E> elements)
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>
copyOf(Iterator<? extends E> elements)
Returns an immutable set containing each ofelements
, minus duplicates, in the order each appears first in the source iterator.boolean
equals(@Nullable Object object)
Indicates whether some other object is "equal to" this one.int
hashCode()
Returns a hash code value for the object.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.static <E> Collector<E,?,ImmutableSet<E>>
toImmutableSet()
Returns aCollector
that accumulates the input elements into a newImmutableSet
.-
Methods inherited from class com.google.common.collect.ImmutableCollection
add, addAll, clear, contains, remove, removeAll, removeIf, retainAll, spliterator, toArray, toArray
-
Methods inherited from class java.util.AbstractCollection
containsAll, isEmpty, size, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream, toArray
-
-
-
-
Method Detail
-
toImmutableSet
public static <E> Collector<E,?,ImmutableSet<E>> toImmutableSet()
Returns aCollector
that 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
public static <E> ImmutableSet<E> of()
Returns the empty immutable set. Preferred overCollections.emptySet()
for code consistency, and because the return type conveys the immutability guarantee.- Type Parameters:
E
- theSet
's element type- Returns:
- an empty
Set
-
of
public static <E> ImmutableSet<E> of(E element)
Returns an immutable set containingelement
. Preferred overCollections.singleton(T)
for code consistency,null
rejection, and because the return type conveys the immutability guarantee.- Type Parameters:
E
- theSet
's element type- Parameters:
element
- the single element- Returns:
- a
Set
containing the specified element
-
of
public 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. That is, if multiple elements are equal, all except the first are ignored.- Type Parameters:
E
- theSet
's element type- Parameters:
e1
- the first elemente2
- the second element- Returns:
- a
Set
containing the specified elements
-
of
public 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. That is, if multiple elements are equal, all except the first are ignored.- Type Parameters:
E
- theSet
's element type- Parameters:
e1
- the first elemente2
- the second elemente3
- the third element- Returns:
- a
Set
containing the specified elements
-
of
public 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. That is, if multiple elements are equal, all except the first are ignored.- Type Parameters:
E
- theSet
's element type- Parameters:
e1
- the first elemente2
- the second elemente3
- the third elemente4
- the fourth element- Returns:
- a
Set
containing the specified elements
-
of
public 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. That is, if multiple elements are equal, all except the first are ignored.- Type Parameters:
E
- theSet
's element type- Parameters:
e1
- the first elemente2
- the second elemente3
- the third elemente4
- the fourth elemente5
- the fifth element- Returns:
- a
Set
containing the specified elements
-
of
@SafeVarargs public 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. That is, if multiple elements are equal, all except the first are ignored.The array
others
must not be longer thanInteger.MAX_VALUE - 6
.- Type Parameters:
E
- theSet
's element type- Parameters:
e1
- the first elemente2
- the second elemente3
- the third elemente4
- the fourth elemente5
- the fifth elemente6
- the sixth elementothers
- the seventh element- Returns:
- a
Set
containing the specified elements - Since:
- 3.0 (source-compatible since 2.0)
-
copyOf
public 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.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.- Type Parameters:
E
- theSet
's element type- Parameters:
elements
- aCollection
from which elements are drawn, must be non-null- Returns:
- a
Set
containing the elements of the givenCollection
- Throws:
NullPointerException
- if any ofelements
is null- Since:
- 7.0 (source-compatible since 2.0)
-
copyOf
public static <E> ImmutableSet<E> copyOf(Iterable<? extends E> elements)
Returns an immutable set containing each ofelements
, minus duplicates, in the order each appears first in the source iterable. This method iterates overelements
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.- Throws:
NullPointerException
- if any ofelements
is null
-
copyOf
public static <E> ImmutableSet<E> copyOf(Iterator<? extends E> elements)
Returns an immutable set containing each ofelements
, minus duplicates, in the order each appears first in the source iterator.- Throws:
NullPointerException
- if any ofelements
is null
-
copyOf
public 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.- Throws:
NullPointerException
- if any ofelements
is null- Since:
- 3.0
-
equals
public boolean equals(@Nullable Object object)
Description copied from class:java.lang.Object
Indicates whether some other object is "equal to" this one.The
equals
method implements an equivalence relation on non-null object references:- It is reflexive: for any non-null reference value
x
,x.equals(x)
should returntrue
. - It is symmetric: for any non-null reference values
x
andy
,x.equals(y)
should returntrue
if and only ify.equals(x)
returnstrue
. - It is transitive: for any non-null reference values
x
,y
, andz
, ifx.equals(y)
returnstrue
andy.equals(z)
returnstrue
, thenx.equals(z)
should returntrue
. - It is consistent: for any non-null reference values
x
andy
, multiple invocations ofx.equals(y)
consistently returntrue
or consistently returnfalse
, provided no information used inequals
comparisons on the objects is modified. - For any non-null reference value
x
,x.equals(null)
should returnfalse
.
The
equals
method for classObject
implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference valuesx
andy
, this method returnstrue
if and only ifx
andy
refer to the same object (x == y
has the valuetrue
).Note that it is generally necessary to override the
hashCode
method whenever this method is overridden, so as to maintain the general contract for thehashCode
method, which states that equal objects must have equal hash codes.- Specified by:
equals
in interfaceCollection<E>
- Specified by:
equals
in interfaceSet<E>
- Overrides:
equals
in classObject
- Parameters:
object
- the reference object with which to compare.- Returns:
true
if this object is the same as the obj argument;false
otherwise.- See Also:
Object.hashCode()
,HashMap
- It is reflexive: for any non-null reference value
-
hashCode
public int hashCode()
Description copied from class:java.lang.Object
Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided byHashMap
.The general contract of
hashCode
is:- Whenever it is invoked on the same object more than once during
an execution of a Java application, the
hashCode
method must consistently return the same integer, provided no information used inequals
comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. - If two objects are equal according to the
equals(Object)
method, then calling thehashCode
method on each of the two objects must produce the same integer result. - It is not required that if two objects are unequal
according to the
Object.equals(java.lang.Object)
method, then calling thehashCode
method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
As much as is reasonably practical, the hashCode method defined by class
Object
does return distinct integers for distinct objects. (The hashCode may or may not be implemented as some function of an object's memory address at some point in time.)- Specified by:
hashCode
in interfaceCollection<E>
- Specified by:
hashCode
in interfaceSet<E>
- Overrides:
hashCode
in classObject
- Returns:
- a hash code value for this object.
- See Also:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
- Whenever it is invoked on the same object more than once during
an execution of a Java application, the
-
iterator
public abstract UnmodifiableIterator<E> iterator()
Description copied from class:ImmutableCollection
Returns an unmodifiable iterator across the elements in this collection.
-
asList
public ImmutableList<E> asList()
Description copied from class:ImmutableCollection
Returns anImmutableList
containing the same elements, in the same order, as this collection.Performance note: in most cases this method can return quickly without actually copying anything. The exact circumstances under which the copy is performed are undefined and subject to change.
- Overrides:
asList
in classImmutableCollection<E>
-
builder
public static <E> ImmutableSet.Builder<E> builder()
Returns a new builder. The generated builder is equivalent to the builder created by theImmutableSet.Builder
constructor.
-
builderWithExpectedSize
@Beta public static <E> ImmutableSet.Builder<E> builderWithExpectedSize(int expectedSize)
Returns a new builder, expecting the specified number of distinct elements to be added.If
expectedSize
is 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
expectedSize
is close to, but not exactly, the number of distinct elements added to the builder.- Since:
- 23.1
-
-