Class ImmutableSet<E>

    • Constructor Summary

      Constructors 
      Constructor Description
      ImmutableSet()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method 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​(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.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​(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()  
      • 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
      • Methods inherited from interface java.lang.Iterable

        forEach
      • Methods inherited from interface java.util.Set

        add, addAll, clear, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, spliterator, toArray, toArray
    • Constructor Detail

      • ImmutableSet

        ImmutableSet()
    • Method Detail

      • toImmutableSet

        public static <E> java.util.stream.Collector<E,​?,​ImmutableSet<E>> toImmutableSet()
        Returns a 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.
        Since:
        21.0
      • 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.

        Performance note: the instance returned is a singleton.

      • 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

        @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 than Integer.MAX_VALUE - 6.

        Since:
        3.0 (source-compatible since 2.0)
      • constructUnknownDuplication

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

        Throws:
        java.lang.NullPointerException - if any of the first n elements of elements is null
      • construct

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

        Throws:
        java.lang.NullPointerException - if any of the first n elements of elements is null
      • 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 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
      • copyOfEnumSet

        private static ImmutableSet copyOfEnumSet​(java.util.EnumSet enumSet)
      • isHashCodeFast

        boolean isHashCodeFast()
        Returns true if the hashCode() method runs quickly.
      • equals

        public boolean equals​(@CheckForNull
                              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.util.Collection<E>
        Specified by:
        iterator in interface java.lang.Iterable<E>
        Specified by:
        iterator in interface java.util.Set<E>
        Specified by:
        iterator in class ImmutableCollection<E>
      • builderWithExpectedSize

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

        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.