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 and Description
`PermutationGenerator(java.util.Collection<E> items)` WARNING: Don't make n too large.
`PermutationGenerator(java.lang.Iterable<E> items)`

### Method Summary

All Methods Instance Methods Concrete Methods
`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 Detail

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

#### reset

    public void reset()

#### getTotal

    public java.math.BigInteger getTotal()

#### hasNext

    public boolean hasNext()

Specified by:
  `hasNext` in interface `java.util.Iterator<java.util.List<E>>`

#### next

    public java.util.List<E> next()

Generate next permutation (algorithm from Rosen p. 284)

Specified by:
  `next` in interface `java.util.Iterator<java.util.List<E>>`
Returns:
  the items permuted

#### remove

    public void remove()

Specified by:
  `remove` in interface `java.util.Iterator<java.util.List<E>>`