Java.Core.What are terminal operations in stream ?

🚦 What are Terminal Operations in Streams?

🔗 Definition

A terminal operation is a final operation that: ✅ Triggers the actual processing of the stream pipeline.
✅ Produces a result (a value, a collection, or a side effect like printing).
Closes the stream — after a terminal operation, the stream cannot be reused.


📊 Stream Pipeline Structure

Stream Source → Intermediate Operations (filter, map, etc.) → Terminal Operation
  • Intermediate operations are lazy (they only prepare transformations).
  • The terminal operation triggers the actual work.

✅ Examples of Terminal Operations

Terminal OperationPurposeExample
collect()Gather elements into a collection (List, Set, Map).collect(Collectors.toList())
forEach()Perform an action on each element.forEach(System.out::println)
reduce()Combine elements into a single result.reduce(0, Integer::sum)
count()Count the number of elements.count()
anyMatch()Check if any element matches a condition.anyMatch(x -> x > 10)
allMatch()Check if all elements match a condition.allMatch(x -> x > 0)
noneMatch()Check if no element matches a condition.noneMatch(x -> x < 0)
findFirst()Get the first element (optional).findFirst()
findAny()Get any element (useful with parallel streams).findAny()
toArray()Convert to array.toArray()

🔗 Example in Action

List<String> names = List.of("Alice", "Bob", "Charlie");

long count = names.stream()
    .filter(name -> name.startsWith("A"))  // Intermediate
    .count();                               // Terminal

System.out.println("Count: " + count);  // Triggers actual work

✅ Without count(), nothing actually happens — the stream is just prepared.
count() forces the pipeline to execute, processing each element.


❗️ What Happens After Terminal Operation?

The stream becomes consumed and cannot be reused:

Stream<String> stream = names.stream();
stream.filter(name -> name.startsWith("A")).count();
stream.filter(name -> name.length() > 3).count();  // ❌ IllegalStateException (stream already closed)

🏁 Key Takeaways

ConceptExplanation
Intermediate OpsPrepare the pipeline (filter, map)
Terminal OpTriggers actual work (collect, count)
One-time useStream cannot be reused after terminal operation
Functional StyleTerminal operation is where you “finalize” your intention
This entry was posted in Без рубрики. Bookmark the permalink.