com.google.common.collect

## 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:
    java.io.Serializable, java.lang.Iterable<E>, java.util.Collection<E>, java.util.Set<E>
  Direct Known Subclasses:
    ImmutableSortedSet

      @GwtCompatible(serializable=true,
                     emulated=true)
      public abstract class ImmutableSet<E>
      extends ImmutableCollection<E>
      implements java.util.Set<E>

  A `Set` whose contents will never change, with many other important properties detailed at `ImmutableCollection`.
  Since:
    2.0
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ImmutableSet.Builder<E>` A builder for creating `ImmutableSet` instances.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static <E> ImmutableSet.Builder<E>` | `builder()` Returns a new builder.
    `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.
    `boolean` | `equals(java.lang.Object object)`
    `int` | `hashCode()`
    `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.

    - ### Methods inherited from class com.google.common.collect.ImmutableCollection

      `add, addAll, asList, clear, contains, remove, removeAll, retainAll, 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.Set

      `add, addAll, clear, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray`

- - ### Method Detail

    - #### of

          public static <E> ImmutableSet<E> of()

      Returns the empty immutable set. Preferred over `Collections.emptySet()` for code consistency, and because the return type conveys the immutability guarantee.

    - #### of

          public static <E> ImmutableSet<E> of(E element)

      Returns an immutable set containing `element`. Preferred over `Collections.singleton(T)` for code consistency, `null` rejection, and because the return type conveys the immutability guarantee.

    - #### 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.

    - #### 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.

    - #### 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.

    - #### 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.

    - #### of

          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.
      Since:
        3.0 (source-compatible since 2.0)

    - #### copyOf

          public 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.

      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 the precise conditions for skipping the copy operation are undefined.

      Throws:
        `java.lang.NullPointerException` - if any of `elements` is null
      Since:
        7.0 (source-compatible since 2.0)

    - #### copyOf

          public 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. 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.

      Throws:
        `java.lang.NullPointerException` - if any of `elements` is null

    - #### copyOf

          public 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.
      Throws:
        `java.lang.NullPointerException` - if any of `elements` is null

    - #### copyOf

          public 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.
      Throws:
        `java.lang.NullPointerException` - if any of `elements` is null
      Since:
        3.0

    - #### equals

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

      Specified by:
        `equals` in interface `java.util.Collection<E>`
      Specified by:
        `equals` in interface `java.util.Set<E>`
      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public int hashCode()

      Specified by:
        `hashCode` in interface `java.util.Collection<E>`
      Specified by:
        `hashCode` in interface `java.util.Set<E>`
      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### iterator

          public abstract UnmodifiableIterator<E> iterator()

      Description copied from class: `ImmutableCollection`
      Returns an unmodifiable iterator across the elements in this collection.
      Specified by:
        `iterator` in interface `java.lang.Iterable<E>`
      Specified by:
        `iterator` in interface `java.util.Collection<E>`
      Specified by:
        `iterator` in interface `java.util.Set<E>`
      Specified by:
        `iterator` in class `ImmutableCollection<E>`

    - #### builder

          public static <E> ImmutableSet.Builder<E> builder()

      Returns a new builder. The generated builder is equivalent to the builder created by the `ImmutableSet.Builder` constructor.