Junior — Middle
What is meant by lazy execution of operations in Streams and why are they implemented this way?
sobes.tech AI
Answer from AI
Lazy evaluation in Java Streams means that intermediate operations (e.g., filter, map) are not executed immediately upon invocation, but only form a description of the data processing pipeline.
The actual processing of elements occurs only when a terminal operation (e.g., collect, forEach) is called. This allows:
- Optimizing execution by combining operations and avoiding unnecessary passes over the data.
- Handling potentially infinite data streams.
- Improving performance through deferred computation.
Example:
List<String> list = Arrays.asList("a", "bb", "ccc");
List<String> result = list.stream()
.filter(s -> s.length() > 1) // intermediate operation, not executed immediately
.map(String::toUpperCase) // also intermediate
.collect(Collectors.toList()); // terminal operation, triggers computation
Here, filtering and transformation are performed only when collect is called.