web-dev-qa-db-fra.com

Comment générer un tableau aléatoire d'ints en utilisant Stream API Java 8?

J'essaie de générer un tableau aléatoire d'entiers à l'aide de la nouvelle API Stream en Java 8. Mais je n'ai pas encore compris cette API. J'ai donc besoin d'aide. Voici mon code. 

Random random = new Random();
IntStream intStream = random.ints(low, high);
int[] array =  intStream.limit(limit) // Limit amount of elements
                                    .boxed() // cast to Integer
                                    .toArray();

Mais ce code retourne un tableau d'objets. Qu'est-ce qui va pas avec ça?

19
ketazafor

Utilisez simplement Random.ints qui retourne un IntStream :

int[] array = new Random().ints(limit, low, high).toArray();
37
Jean Logeart

Il n'y a aucune raison de boxed(). Il suffit de recevoir la Stream en tant que int[].

int[] array = intStream.limit(limit).toArray();
5

Vous pouvez le faire en utilisant ThreadLocalRandom.

int[] randInts = ThreadLocalRandom.current().ints().limit(100).toArray();
3
zeronone

Pour générer des nombres aléatoires allant de 0 à 350, en limitant le résultat à 10, et les collecter sous forme de liste. Plus tard, il pourrait être catalogué.

Cependant, il n'y a aucune garantie sur le type, la mutabilité, la sérialisabilité ou la sécurité des threads de la liste renvoyée.

List<Object> numbers =  new Random().ints(0,350).limit(10).boxed().collect(Collectors.toList());

et pour avoir le sens de l'utilisation int 

int[] numbers =  new Random().ints(0,350).limit(10).toArray();
2
Lakshay Gupta