Sobes.tech
Junior — Middle

How to distinguish the use of Stream API from simple loops in Java?

sobes.tech AI

Answer from AI

The Stream API in Java provides a declarative way to process collections and other data sources, unlike traditional loops that describe processing steps imperatively.

Differences:

  • Declarativeness: With the Stream API, you describe what you want to do (filter, transform, collect), not how to do it.

  • Operation chains: Stream allows building chains of intermediate operations (map, filter, sorted), which are executed lazily and efficiently.

  • Parallelism: The Stream API easily switches to parallel processing using parallelStream(), which is hard to implement manually with loops.

  • Readability: Code with the Stream API is often shorter and clearer, especially for complex transformations.

Example:

List<String> names = Arrays.asList("Anna", "Bob", "Charlie", "David");

// Using a loop
List<String> filtered = new ArrayList<>();
for (String name : names) {
    if (name.length() > 3) {
        filtered.add(name.toUpperCase());
    }
}

// Using Stream API
List<String> filteredStream = names.stream()
    .filter(name -> name.length() > 3)
    .map(String::toUpperCase)
    .collect(Collectors.toList());

Thus, the Stream API simplifies working with collections, making code more expressive and suitable for parallel processing.