In this tutorial, we will see how Java 8 Stream Generate Random String and Numbers.

Stream generate random String:

Stream provides generate method – It returns an infinite sequential unordered stream where each element is generated by the given supplier.

Syntax:

static <T> Stream<T>  generate(Supplier<T> s)

The random method takes Supplier as a parameter, generates random elements and returns the infinite sequential unordered stream.

How to Generate random String:

Creating a Supplier class which supplies the random string.

Generator.java
import java.util.Random;
import java.util.function.Supplier;

public class Generator implements Supplier<String> {
    Random random = new Random(50);
    char[] letters =
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
    @Override
    public String get() {
        System.out.print(letters[random.nextInt(letters.length)]);
        return "" + letters[random.nextInt(letters.length)];
    }
}

Stream.random():

Generating random string length of 20

StreamGenerate.java
public class StreamGenerate {
    public static void main(String[] args) {
        String random_string = Stream.generate(new Generator())
                .limit(20)
                .collect(Collectors.joining());
        System.out.println(random_string);
    }
}

Output:

Terminal
NY3Q5NQSAQUUM9IA6LXQ

Stream generate random Numbers:

Generating random numbers (integers and doubles) using Stream.generate() method.

// Generating 10 random Integers
Stream.generate(new Random()::nextInt)
       .limit(10).forEach(System.out::println);
// Generating 10 random Doubles
Stream.generate(new Random()::nextDouble)
       .limit(10).forEach(System.out::println);

Output:

Terminal
-1196464118
-1593812527
-1724863181
259768096
-934357725
-192325390
-2083605141
865137992
760235079

0.4896064504440346
0.4426364500730168
0.9603767307360307
0.7014553531359498
0.7286628591385252
0.961113001747233
0.6084732423154003
0.5903369288532173
0.8575574428205311
0.6410731496668606

Done!

References:

Happy Learning 🙂