shuffle()

Shuffle the input stream into a random order.

Implementation Notes

This implementation reads the entire stream before emitting any results, making it inappropriate for infinite streams. There are two versions of this Gatherer, one that uses the platform default RandomGenerator and one that allows the caller to specify a RandomGenerator.

Signatures

  1. shuffle()
  2. shuffle(RandomGenerator randomGenerator)
  • randomGenerator - (Optional) A RandomGenerator to use as the source of randomness.

Examples

Randomly shuffle the input stream specifying the source of randomness

Stream
    .of("A", "B", "C", "D", "E", "F", "G")
    .gather(Gatherers4j.shuffle(new Random(42)))
    .toList();
    
// [ "B", "D", "F", "A", "E", "G", "C" ]

Randomly shuffle the input stream with the default source of random

Stream
    .of("A", "B", "C", "D", "E", "F", "G")
    .gather(Gatherers4j.shuffle())
    .toList();
    
// [ "F", "D", "A", "G", "B", "C", "E" ]  <-- Random!