Как преобразовать массив в Stream в Java?

«Как преобразовать массив в Stream в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, в Java 8+ для этого есть несколько методов.

1. Использование Arrays.stream(T[] array) (наиболее распространенный способ):

String[] stringArray = {"Java", "Stream", "API"};
Stream<String> streamFromArray = Arrays.stream(stringArray);

2. Использование Stream.of(T... values):

Stream<String> stream = Stream.of(stringArray); // Массив как varargs
Stream<String> directStream = Stream.of("A", "B", "C"); // Элементы напрямую

3. Для массивов примитивных типов используйте специализированные классы:

int[] intArray = {1, 2, 3, 4, 5};
IntStream intStream = Arrays.stream(intArray); // Возвращает IntStream
// Или
IntStream anotherIntStream = IntStream.of(intArray);

// Аналогично для long и double: LongStream, DoubleStream.

Ключевые различия:

  • Arrays.stream() для примитивных массивов возвращает соответствующий IntStream, LongStream, DoubleStream, что эффективнее и предоставляет дополнительные методы (sum, average).
  • Stream.of() для примитивного массива создаст Stream<int[]> из одного элемента (самого массива), что обычно нежелательно.

Рекомендация: Для объектов используйте любой метод. Для примитивов всегда предпочитайте Arrays.stream() или IntStream.of().