12

I am writing simple program which will eventually plot the run times of various sorting algorithms written in Java. The general interface of a sorting algorithm is via a method: public void sort(Comparable[] xs)

I am attempting to use Java 8's stream mechanism to generate random test cases along the following lines:

public static IntStream testCase(int min, int max, int n) {
    Random generator = new Random();
    return generator.ints(min, max).limit(n);
}

My question is, how can I convert an object of type IntStream to an Integer[]?

1
  • 1
    Don’t use ints(min, max).limit(n) but just ints(n, min, max). It’s not only shorter, given the current implementation and the fact that you want to collect into an array, it’ll be more efficient.
    – Holger
    Commented Feb 18, 2016 at 14:05

1 Answer 1

24

You should box the IntStream to a Stream<Integer>, then call toArray to make a array of it:

Integer[] arr = testCase(1,2,3).boxed().toArray(Integer[]::new);
1
  • The key is boxed() the IntStream into a Stream<Integer>
    – Weekend
    Commented Mar 2, 2023 at 2:23