Package groovy.util

# Class PermutationGenerator<E>

java.lang.Object
groovy.util.PermutationGenerator<E>

All Implemented Interfaces:
  `Iterator<List<E>>`

    public class PermutationGenerator<E>
    extends Object
    implements Iterator<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​(Iterable<E> items)` |
  `PermutationGenerator​(Collection<E> items)` | WARNING: Don't make n too large.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `BigInteger` | `getTotal()` |
  `boolean` | `hasNext()` |
  `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​(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​(Iterable<E> items)

- ## Method Details

  - ### reset

    public void reset()

  - ### getTotal

    public BigInteger getTotal()

  - ### hasNext

    public boolean hasNext()
    Specified by:
      `hasNext` in interface `Iterator<E>`

  - ### next

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

  - ### remove

    public void remove()
    Specified by:
      `remove` in interface `Iterator<E>`