How to generate a list of given length in Java 8?

java, java-8, python

Solution

I am not Python developer so I may misunderstood your example, but judging from Java example you may be looking for something like

Stream.generate(this::generate).limit(length).collect(Collectors.toList());

But as Brian Goetz mentioned your approach

IntStream.range(0, length).mapToObj(i->...)

will perform significantly better in parallel.

Problem

I want to create a list (or collection in general) by calling a method x times. In Python it would be something like this. ``` self.generated = [self.generate() for _ in range(length)] ``` I tried to code something similar in JDK 8. ``` this.generated = IntStream.range(0, length) .mapToObj(n -> this.generate()) .collect(Collectors.toList()); ``` It works, but somehow it doesn't feel allright. Is there a more proper way of doing it?

Original source