Class EmptySet<T>

All Implemented Interfaces:
Serializable, Cloneable, Iterable<T>, Collection<T>, Set<T>, FixedSizeCollection<T>, MutableCollection<T>, InternalIterable<T>, RichIterable<T>, FixedSizeSet<T>, MutableSet<T>, MutableSetIterable<T>, SetIterable<T>, UnsortedSetIterable<T>

final class EmptySet<T> extends AbstractMemoryEfficientMutableSet<T> implements Serializable
This class is a memory efficient list with no elements. It is created by calling Lists.fixedSize.of() which actually returns a singleton instance.
  • Field Details

  • Constructor Details

    • EmptySet

      EmptySet()
  • Method Details

    • readResolve

      private Object readResolve()
    • clone

      public EmptySet<T> clone()
      Specified by:
      clone in interface MutableSet<T>
      Overrides:
      clone in class AbstractMutableSet<T>
    • size

      public int size()
      Description copied from interface: RichIterable
      Returns the number of items in this iterable.
      Specified by:
      size in interface Collection<T>
      Specified by:
      size in interface RichIterable<T>
      Specified by:
      size in interface Set<T>
    • contains

      public boolean contains(Object obj)
      Description copied from interface: RichIterable
      Returns true if the iterable has an element which responds true to element.equals(object).
      Specified by:
      contains in interface Collection<T>
      Specified by:
      contains in interface RichIterable<T>
      Specified by:
      contains in interface Set<T>
      Overrides:
      contains in class AbstractRichIterable<T>
    • getFirst

      public T getFirst()
      Description copied from interface: RichIterable
      Returns the first element of an iterable. In the case of a List it is the element at the first index. In the case of any other Collection, it is the first element that would be returned during an iteration. If the iterable is empty, null is returned. If null is a valid element of the container, then a developer would need to check to see if the iterable is empty to validate that a null result was not due to the container being empty.

      The order of Sets are not guaranteed (except for TreeSets and other Ordered Set implementations), so if you use this method, the first element could be any element from the Set.

      Specified by:
      getFirst in interface RichIterable<T>
    • getLast

      public T getLast()
      Description copied from interface: RichIterable
      Returns the last element of an iterable. In the case of a List it is the element at the last index. In the case of any other Collection, it is the last element that would be returned during an iteration. If the iterable is empty, null is returned. If null is a valid element of the container, then a developer would need to check to see if the iterable is empty to validate that a null result was not due to the container being empty.

      The order of Sets are not guaranteed (except for TreeSets and other Ordered Set implementations), so if you use this method, the last element could be any element from the Set.

      Specified by:
      getLast in interface RichIterable<T>
    • getOnly

      public T getOnly()
      Description copied from interface: RichIterable
      Returns the element if the iterable has exactly one element. Otherwise, throw IllegalStateException.
      Specified by:
      getOnly in interface RichIterable<T>
      Returns:
      an element of an iterable.
    • each

      public void each(Procedure<? super T> procedure)
      Description copied from interface: RichIterable
      The procedure is executed for each element in the iterable.

      Example using a Java 8 lambda expression:

       people.each(person -> LOGGER.info(person.getName()));
       

      Example using an anonymous inner class:

       people.each(new Procedure<Person>()
       {
           public void value(Person person)
           {
               LOGGER.info(person.getName());
           }
       });
       
      This method is a variant of InternalIterable.forEach(Procedure) that has a signature conflict with Iterable.forEach(java.util.function.Consumer).
      Specified by:
      each in interface RichIterable<T>
      See Also:
    • forEachWithIndex

      public void forEachWithIndex(ObjectIntProcedure<? super T> objectIntProcedure)
      Description copied from interface: InternalIterable
      Iterates over the iterable passing each element and the current relative int index to the specified instance of ObjectIntProcedure.

      Example using a Java 8 lambda:

       people.forEachWithIndex((Person person, int index) -> LOGGER.info("Index: " + index + " person: " + person.getName()));
       

      Example using an anonymous inner class:

       people.forEachWithIndex(new ObjectIntProcedure<Person>()
       {
           public void value(Person person, int index)
           {
               LOGGER.info("Index: " + index + " person: " + person.getName());
           }
       });
       
      Specified by:
      forEachWithIndex in interface InternalIterable<T>
      Overrides:
      forEachWithIndex in class AbstractRichIterable<T>
    • forEachWith

      public <P> void forEachWith(Procedure2<? super T,? super P> procedure, P parameter)
      Description copied from interface: InternalIterable
      The procedure2 is evaluated for each element in the iterable with the specified parameter provided as the second argument.

      Example using a Java 8 lambda:

       people.forEachWith((Person person, Person other) ->
           {
               if (person.isRelatedTo(other))
               {
                    LOGGER.info(person.getName());
               }
           }, fred);
       

      Example using an anonymous inner class:

       people.forEachWith(new Procedure2<Person, Person>()
       {
           public void value(Person person, Person other)
           {
               if (person.isRelatedTo(other))
               {
                    LOGGER.info(person.getName());
               }
           }
       }, fred);
       
      Specified by:
      forEachWith in interface InternalIterable<T>
      Overrides:
      forEachWith in class AbstractRichIterable<T>
    • iterator

      public Iterator<T> iterator()
      Specified by:
      iterator in interface Collection<T>
      Specified by:
      iterator in interface Iterable<T>
      Specified by:
      iterator in interface Set<T>
    • equals

      public boolean equals(Object other)
      Description copied from interface: SetIterable
      Follows the same general contract as Set.equals(Object).
      Specified by:
      equals in interface Collection<T>
      Specified by:
      equals in interface Set<T>
      Specified by:
      equals in interface SetIterable<T>
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Description copied from interface: SetIterable
      Follows the same general contract as Set.hashCode().
      Specified by:
      hashCode in interface Collection<T>
      Specified by:
      hashCode in interface Set<T>
      Specified by:
      hashCode in interface SetIterable<T>
      Overrides:
      hashCode in class Object
    • min

      public T min(Comparator<? super T> comparator)
      Description copied from interface: RichIterable
      Returns the minimum element out of this container based on the comparator.
      Specified by:
      min in interface RichIterable<T>
      Overrides:
      min in class AbstractRichIterable<T>
    • max

      public T max(Comparator<? super T> comparator)
      Description copied from interface: RichIterable
      Returns the maximum element out of this container based on the comparator.
      Specified by:
      max in interface RichIterable<T>
      Overrides:
      max in class AbstractRichIterable<T>
    • min

      public T min()
      Description copied from interface: RichIterable
      Returns the minimum element out of this container based on the natural order.
      Specified by:
      min in interface RichIterable<T>
      Overrides:
      min in class AbstractRichIterable<T>
    • max

      public T max()
      Description copied from interface: RichIterable
      Returns the maximum element out of this container based on the natural order.
      Specified by:
      max in interface RichIterable<T>
      Overrides:
      max in class AbstractRichIterable<T>
    • minBy

      public <V extends Comparable<? super V>> T minBy(Function<? super T,? extends V> function)
      Description copied from interface: RichIterable
      Returns the minimum elements out of this container based on the natural order of the attribute returned by Function.
      Specified by:
      minBy in interface RichIterable<T>
      Overrides:
      minBy in class AbstractRichIterable<T>
    • maxBy

      public <V extends Comparable<? super V>> T maxBy(Function<? super T,? extends V> function)
      Description copied from interface: RichIterable
      Returns the maximum elements out of this container based on the natural order of the attribute returned by Function.
      Specified by:
      maxBy in interface RichIterable<T>
      Overrides:
      maxBy in class AbstractRichIterable<T>
    • zip

      @Deprecated public <S> MutableSet<Pair<T,S>> zip(Iterable<S> that)
      Deprecated.
      in 6.0. Use OrderedIterable.zip(Iterable) instead.
      Description copied from interface: RichIterable
      Returns a RichIterable formed from this RichIterable and another RichIterable by combining corresponding elements in pairs. If one of the two RichIterables is longer than the other, its remaining elements are ignored.
      Specified by:
      zip in interface MutableCollection<T>
      Specified by:
      zip in interface MutableSet<T>
      Specified by:
      zip in interface MutableSetIterable<T>
      Specified by:
      zip in interface RichIterable<T>
      Specified by:
      zip in interface UnsortedSetIterable<T>
      Overrides:
      zip in class AbstractMutableSet<T>
      Type Parameters:
      S - the type of the second half of the returned pairs
      Parameters:
      that - The RichIterable providing the second half of each result pair
      Returns:
      A new RichIterable containing pairs consisting of corresponding elements of this RichIterable and that. The length of the returned RichIterable is the minimum of the lengths of this RichIterable and that.
    • zip

      public <S, R extends Collection<Pair<T, S>>> R zip(Iterable<S> that, R target)
      Description copied from interface: RichIterable
      Same as RichIterable.zip(Iterable) but uses target for output.
      Specified by:
      zip in interface RichIterable<T>
      Overrides:
      zip in class AbstractRichIterable<T>
    • zipWithIndex

      @Deprecated public MutableSet<Pair<T,Integer>> zipWithIndex()
      Deprecated.
      in 6.0. Use OrderedIterable.zipWithIndex() instead.
      Description copied from interface: RichIterable
      Zips this RichIterable with its indices.
      Specified by:
      zipWithIndex in interface MutableCollection<T>
      Specified by:
      zipWithIndex in interface MutableSet<T>
      Specified by:
      zipWithIndex in interface MutableSetIterable<T>
      Specified by:
      zipWithIndex in interface RichIterable<T>
      Specified by:
      zipWithIndex in interface SetIterable<T>
      Specified by:
      zipWithIndex in interface UnsortedSetIterable<T>
      Overrides:
      zipWithIndex in class AbstractMutableSet<T>
      Returns:
      A new RichIterable containing pairs consisting of all elements of this RichIterable paired with their index. Indices start at 0.
      See Also:
    • zipWithIndex

      public <R extends Collection<Pair<T, Integer>>> R zipWithIndex(R target)
      Description copied from interface: RichIterable
      Same as RichIterable.zipWithIndex() but uses target for output.
      Specified by:
      zipWithIndex in interface RichIterable<T>
      Overrides:
      zipWithIndex in class AbstractRichIterable<T>
    • with

      public MutableSet<T> with(T element)
      Description copied from interface: MutableCollection
      This method allows mutable and fixed size collections the ability to add elements to their existing elements. In order to support fixed size a new instance of a collection would have to be returned taking the elements of the original collection and appending the new element to form the new collection. In the case of mutable collections, the original collection is modified, and is returned. In order to use this method properly with mutable and fixed size collections the following approach must be taken:
       MutableCollection<String> list = list.with("1");
       list = list.with("2");
       return list;
       
      In the case of FixedSizeCollection a new instance of MutableCollection will be returned by with, and any variables that previously referenced the original collection will need to be redirected to reference the new instance. For other MutableCollection types you will replace the reference to collection with the same collection, since the instance will return "this" after calling add on itself.
      Specified by:
      with in interface FixedSizeCollection<T>
      Specified by:
      with in interface FixedSizeSet<T>
      Specified by:
      with in interface MutableCollection<T>
      Specified by:
      with in interface MutableSet<T>
      Specified by:
      with in interface MutableSetIterable<T>
      See Also:
    • without

      public MutableSet<T> without(T element)
      Description copied from interface: MutableCollection
      This method allows mutable and fixed size collections the ability to remove elements from their existing elements. In order to support fixed size a new instance of a collection would have to be returned containing the elements that would be left from the original collection after calling remove. In the case of mutable collections, the original collection is modified, and is returned. In order to use this method properly with mutable and fixed size collections the following approach must be taken:
       MutableCollection<String> list = list.without("1");
       list = list.without("2");
       return list;
       
      In the case of FixedSizeCollection a new instance of MutableCollection will be returned by without, and any variables that previously referenced the original collection will need to be redirected to reference the new instance. For other MutableCollection types you will replace the reference to collection with the same collection, since the instance will return "this" after calling remove on itself.
      Specified by:
      without in interface FixedSizeCollection<T>
      Specified by:
      without in interface FixedSizeSet<T>
      Specified by:
      without in interface MutableCollection<T>
      Specified by:
      without in interface MutableSet<T>
      Specified by:
      without in interface MutableSetIterable<T>
      See Also: