Groovy Documentation

groovy.util
[Java] Class PermutationGenerator

java.lang.Object
  groovy.util.PermutationGenerator
All Implemented Interfaces:
java.util.Iterator

public class PermutationGenerator
extends java.lang.Object

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
PermutationGenerator(java.util.Collection items)

WARNING: Don't make n too large.

 
Method Summary
java.math.BigInteger getTotal()

boolean hasNext()

java.util.List next()

Generate next permutation (algorithm from Rosen p. 284)

void remove()

void reset()

 
Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()
 

Constructor Detail

PermutationGenerator

public PermutationGenerator(java.util.Collection 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


 
Method Detail

getTotal

public java.math.BigInteger getTotal()


hasNext

public boolean hasNext()


next

public java.util.List next()
Generate next permutation (algorithm from Rosen p. 284)
Returns:
the items permuted


remove

public void remove()


reset

public void reset()


 

Groovy Documentation