Sobes.tech
Junior — Middle

Czy możesz wyjaśnić, co oznacza termin 'operacja nieterminalna' podczas pracy z przepływami danych w API Stream?

sobes.tech AI

Odpowiedź od AI

W API Stream Java operacje dzielą się na terminalne i nieterminalne (pośrednie).

Operacja nieterminalna to operacja, która zwraca nowy strumień (Stream) i nie uruchamia od razu przetwarzania danych. Służy do budowania łańcucha transformacji, np. filtrowania, mapowania, sortowania.

Przykład operacji nieterminalnych:

  • filter()
  • map()
  • sorted()
  • distinct()

Operacje te są leniwe: nie są wykonywane, dopóki nie zostanie wywołana operacja terminalna, np. forEach(), collect(), count().

Przykład:

List<String> list = Arrays.asList("a", "bb", "ccc");

list.stream()
    .filter(s -> s.length() > 1) // nieterminalne
    .map(String::toUpperCase)    // nieterminalne
    .forEach(System.out::println); // terminalne

W ten sposób operacje nieterminalne pozwalają na budowę łańcucha transformacji, a terminalna uruchamia wykonanie.