Class PermutationIterator<E>

  • Type Parameters:
    E - the type of the objects being permuted
    All Implemented Interfaces:
    java.util.Iterator<java.util.List<E>>

    public class PermutationIterator<E>
    extends java.lang.Object
    implements java.util.Iterator<java.util.List<E>>
    This iterator creates permutations of an input collection, using the Steinhaus-Johnson-Trotter algorithm (also called plain changes).

    The iterator will return exactly n! permutations of the input collection. The remove() operation is not supported, and will throw an UnsupportedOperationException.

    NOTE: in case an empty collection is provided, the iterator will return exactly one empty list as result, as 0! = 1.

    Since:
    4.0
    • Constructor Summary

      Constructors 
      Constructor Description
      PermutationIterator​(java.util.Collection<? extends E> coll)
      Standard constructor for this class.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean hasNext()
      Indicates if there are more permutation available.
      java.util.List<E> next()
      Returns the next permutation of the input collection.
      void remove()  
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.Iterator

        forEachRemaining
    • Constructor Detail

      • PermutationIterator

        public PermutationIterator​(java.util.Collection<? extends E> coll)
        Standard constructor for this class.
        Parameters:
        coll - the collection to generate permutations for
        Throws:
        java.lang.NullPointerException - if coll is null
    • Method Detail

      • hasNext

        public boolean hasNext()
        Indicates if there are more permutation available.
        Specified by:
        hasNext in interface java.util.Iterator<E>
        Returns:
        true if there are more permutations, otherwise false
      • next

        public java.util.List<E> next()
        Returns the next permutation of the input collection.
        Specified by:
        next in interface java.util.Iterator<E>
        Returns:
        a list of the permutator's elements representing a permutation
        Throws:
        java.util.NoSuchElementException - if there are no more permutations
      • remove

        public void remove()
        Specified by:
        remove in interface java.util.Iterator<E>