random.longs (ARRAY_SIZE, 0, 100000) возвращает длинный поток, и я хочу преобразовать этот поток в Long Array. как это можно сделать? - PullRequest
0 голосов
/ 12 октября 2019

Я хочу создать поток длинных чисел, поэтому я использовал случайную функцию, а затем преобразовал этот поток в массив с помощью toArray (). но этот массив генерируется в long [], а я хочу в Long []. как это можно сделать

Long[] array1 = new Long[1000000];

Random random = new Random();

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

Несоответствие типов: невозможно преобразовать long [] в Long []

Ответы [ 2 ]

0 голосов
/ 12 октября 2019

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);
}
0 голосов
/ 12 октября 2019

Вы можете сделать это так. Но зачем использовать Long [] вместо примитивного массива long []? Объектные обертки примитивных типов имеют больше накладных расходов. И если вы присваиваете им примитивный тип, для преобразования требуется распаковка.

      Long[] array1 = new Long[ARRAY_SIZE];

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

...