Stream <double []> против DoubleStream

Мне нужно преобразовать массив двойных значений в поток В чем разница между следующими двумя подходами? Какой из них лучше ?

 double [] dArray = {1.2,2.3,3.4,4.5};
 Stream<double[]> usingStream =  Stream.of(dArray); //approach 1
 DoubleStream usingArrays = Arrays.stream(dArray); //approach 2
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
803
3

Ответы 3

Очевидно, что Stream.of(dArray) дает вам Stream<double[]>, единственным элементом которого является входной массив, что, вероятно, не то, что вам нужно. Вы могли бы использовать этот подход, если бы ваш ввод был Double[] вместо примитивного массива, поскольку тогда вы бы получили Stream<Double> элементов массива.

Поэтому Arrays.stream(dArray) - это то, что вам нужно, когда вам нужно преобразовать массив double в поток double.

Помимо того, что они разные?

DoubleStream можно рассматривать как Stream<Double> (но как примитив), а Stream<double[]> - это поток множество.

Stream.of и Arrays.stream - это совершенно разные вещи для разных целей, и поэтому их не следует сравнивать.

Stream.of при передаче одномерного массива, как в вашем примере, даст поток с единственным элементом, который является самим массивом, что в большинстве случаев не то, что вам нужно.

Arrays.stream, как следует из названия, работает на массивы, тогда как Stream.of является более общим.

Было бы лучше и интереснее, если бы вы спросили, в чем разница между DoubleStream.of(dArray) и Arrays.stream(dArray).

Я думаю, что оба (DoubleStream.of (dArray) и Arrays.stream (dArray)) - это то же самое, что и возврат DoubleStream. И Arrays.stream (), имеющий несколько перегруженных методов для обработки различных типов массивов, чтобы преобразовать их в соответствующий тип потока ... например, IntStream, LongStream

Raj N 05.06.2018 08:49

@RajN ну, они «одинаковы» в том смысле, что оба возвращают DoubleStream, но они разные в том смысле, что один предназначен для использования явно типизированных значений (DoubleStream.of), а другой предназначен для использования массива ( Arrays.stream). Но тогда можно сказать, что DoubleStream.of по-прежнему выдает правильное значение с учетом двойного массива. Это все из-за varargs .. но в идеале вы должен используете DoubleStream.of только тогда, когда вы хотите передать явные значения, например. DoubleStream.of (1.0,2.0,3.0), поскольку он имеет больше смысла и в этом его предполагаемая цель. Отсюда то, что делает этот вопрос более интересным.

Ousmane D. 05.06.2018 09:14

@RajN Поскольку они одинаковы по функциональности, но предназначены для разных целей, я считаю, что это делает этот вопрос намного более интересным, ИМО.

Ousmane D. 05.06.2018 09:16

Другие вопросы по теме