Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java longs(ARRAY_SIZE,0,100000)返回长流,我想把这个流转换成长数组。如何做到这一点?_Java_Arrays_Collections_Java 8_Java Stream - Fatal编程技术网

Java longs(ARRAY_SIZE,0,100000)返回长流,我想把这个流转换成长数组。如何做到这一点?

Java longs(ARRAY_SIZE,0,100000)返回长流,我想把这个流转换成长数组。如何做到这一点?,java,arrays,collections,java-8,java-stream,Java,Arrays,Collections,Java 8,Java Stream,我想生成一个长数字流,所以我使用随机函数,然后使用toArray()将该流转换为数组。但是这个数组是在long[]中生成的,但是我想要在long[]中生成。那么如何做到这一点呢 Long[] array1 = new Long[1000000]; Random random = new Random(); array1 = random.longs(ARRAY_SIZE, 0, 100000).toArray(); 类型不匹配:无法从long[]转换为long[]您可以这样做。但是为什么要

我想生成一个长数字流,所以我使用随机函数,然后使用toArray()将该流转换为数组。但是这个数组是在long[]中生成的,但是我想要在long[]中生成。那么如何做到这一点呢

Long[] array1 = new Long[1000000];

Random random = new Random();

array1 = random.longs(ARRAY_SIZE, 0, 100000).toArray();

类型不匹配:无法从long[]转换为long[]

您可以这样做。但是为什么要使用Long[]而不是Long[]的基本数组呢?基本类型的对象包装器有更多的开销。如果将它们指定给基元类型,则转换需要取消装箱

Long[]array1=新的Long[ARRAY_SIZE];
随机=新随机();
array1=random.longs(数组大小,0,100000).boxed().toArray(Long[]::new);

Random::longs
返回一个
LongStream
。因此,假设您希望将其收集到数组
Long[]
,那么这应该会有所帮助:

Long[] array = random.longs(ARRAY_SIZE, 0, 100000)
                     .boxed()
                     .toArray(Long[]::new);

您可以在较短的流上检查进近:

Long[] array = LongStream.range(0, 10)
                         .boxed()
                         .toArray(Long[]::new);

for (Long l : array){
    System.out.println(l);
}

它不起作用。它显示了一个错误“类型不匹配:无法从对象[]转换为长[]”。无法使用原语long[],因为我必须遵循要求。请建议我不能解释。这对我来说很好。请重新检查语法。为什么需要装箱的
Long
数组?这将大大降低效率,并代表着一种可能。