Package groovy.util

Class PermutationGenerator<E>

java.lang.Object
groovy.util.PermutationGenerator<E>
All Implemented Interfaces:
java.util.Iterator<java.util.List<E>>

public class PermutationGenerator<E>
extends java.lang.Object
implements java.util.Iterator<java.util.List<E>>
Systematically generate permutations. Adapted from Java Code by Michael Gilleland (released with no restrictions) using an algorithm described here: Kenneth H. Rosen, Discrete Mathematics and Its Applications, 2nd edition (NY: McGraw-Hill, 1991), pp. 282-284
  • Constructor Summary

    Constructors
    Constructor Description
    PermutationGenerator​(java.lang.Iterable<E> items)  
    PermutationGenerator​(java.util.Collection<E> items)
    WARNING: Don't make n too large.
  • Method Summary

    Modifier and Type Method Description
    java.math.BigInteger getTotal()  
    boolean hasNext()  
    java.util.List<E> next()
    Generate next permutation (algorithm from Rosen p.
    void remove()  
    void reset()  

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface java.util.Iterator

    forEachRemaining
  • Constructor Details

    • PermutationGenerator

      public PermutationGenerator​(java.util.Collection<E> items)
      WARNING: Don't make n too large. Recall that the number of permutations is n! which can be very large, even when n is as small as 20 -- 20! = 2,432,902,008,176,640,000 and 21! is too big to fit into a Java long, which is why we use BigInteger instead.
      Parameters:
      items - the items to permute
    • PermutationGenerator

      public PermutationGenerator​(java.lang.Iterable<E> items)
  • Method Details

    • reset

      public void reset()
    • getTotal

      public java.math.BigInteger getTotal()
    • hasNext

      public boolean hasNext()
      Specified by:
      hasNext in interface java.util.Iterator<E>
    • next

      public java.util.List<E> next()
      Generate next permutation (algorithm from Rosen p. 284)
      Specified by:
      next in interface java.util.Iterator<E>
      Returns:
      the items permuted
    • remove

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