如何使用 Stream API Java 8 生成随机整数数组?

2022-09-01 10:22:10

我正在尝试使用Java 8中的新Stream API生成随机整数数组。但我还没有清楚地理解这个API。所以我需要帮助。这是我的代码。

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

但此代码返回对象数组。这是怎么回事?


答案 1

如果需要基元值,请不要调用 IntStream::boxed,因为这会通过装箱生成 Integer 对象。int

只需使用 Random::ints,它返回一个 IntStream

int[] array = new Random().ints(size, lowBound, highBound).toArray();

答案 2

生成范围 0 到 350 的随机数,将结果限制为 10,并收集为 List。稍后可以对其进行类型转换。

但是,对返回的 List 的类型、可变性、可序列化性或线程安全性没有保证。

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

并获得int使用数组

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