Mediumstreamjava8

Что такое stream API (Java 8)?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Stream API — функциональный подход к обработке коллекций. Pipeline: source → intermediate ops (lazy) → terminal op (запускает выполнение).

List<Integer> doubled = list.stream()
    .filter(x -> x > 0)         // intermediate
    .map(x -> x * 2)            // intermediate
    .sorted()                   // intermediate, stateful
    .collect(Collectors.toList()); // terminal

Map<Boolean, List<Integer>> bySign = list.stream()
    .collect(Collectors.partitioningBy(x -> x >= 0));
  • Intermediate: filter, map, flatMap, distinct, sorted, limit, peek;
  • Terminal: collect, reduce, count, forEach, min, max, findFirst, anyMatch;
  • Lazy — ничего не выполняется без terminal;
  • Stream одноразовый; не модифицирует source;
  • .parallelStream() использует ForkJoinPool; IntStream/LongStream — без boxing.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.