Stream API Sample Examples
Share
✅ 1. Filter Even Numbers
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evens = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evens); // Output: [2, 4, 6]
✅ 2. Convert to Uppercase
List<String> names = Arrays.asList("aftab", "neha", "ravi");
List<String> upperNames = names.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(upperNames); // Output: [AFTAB, NEHA, RAVI]
✅ 3. Sort Strings by Length
List<String> words = Arrays.asList("apple", "banana", "kiwi", "pear");
List<String> sorted = words.stream()
.sorted(Comparator.comparingInt(String::length))
.collect(Collectors.toList());
System.out.println(sorted); // Output: [kiwi, pear, apple, banana]
✅ 4. Find First Element Starting with 'A'
List<String> names = Arrays.asList("Ravi", "Aftab", "Nitin");
Optional<String> name = names.stream()
.filter(n -> n.startsWith("A"))
.findFirst();
System.out.println(name.orElse("No match")); // Output: Aftab
✅ 5. Sum of Squares
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
int sumOfSquares = numbers.stream()
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println(sumOfSquares); // Output: 30
✅ 6. Count Strings Longer Than 4 Letters
List<String> names = Arrays.asList("Java", "Spring", "AWS", "Hibernate");
long count = names.stream()
.filter(n -> n.length() > 4)
.count();
System.out.println(count); // Output: 2
✅ 7. Group Names by Starting Letter
List<String> names = Arrays.asList("Neha", "Nitin", "Aftab", "Ravi");
Map<Character, List<String>> grouped = names.stream()
.collect(Collectors.groupingBy(name -> name.charAt(0)));
System.out.println(grouped);
// Output: {N=[Neha, Nitin], A=[Aftab], R=[Ravi]}
✅ 8. Remove Duplicates and Sort
List<Integer> nums = Arrays.asList(3, 2, 1, 2, 3, 4);
List<Integer> result = nums.stream()
.distinct()
.sorted()
.collect(Collectors.toList());
System.out.println(result); // Output: [1, 2, 3, 4]
✅ 9. Sum of two numbers
✅ 10. Check if String is Empty
✅ 11. Convert String to Uppercase or Lowercase
✅ 12. Filter Even/Odd numbers
✅ 13. Sort strings alphabetically using a lambda
✅ 14. Find the average of doubles using a lambda
✅ 15. Remove integer duplicates
✅ 16. Concatenate two strings
✅ 17. Find max and min in a list of Integers using a lambda
✅ 17. Multiply and sum list elements
✅ 18. Sort a list of objects based on a specific attribute
✅ 19. flatMap() Example – Flattening Nested Lists
List<List<String>> nestedList = Arrays.asList(
Arrays.asList("Java", "Spring"),
Arrays.asList("AWS", "Docker"),
Arrays.asList("Kubernetes")
);
List<String> flatList = nestedList.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
System.out.println(flatList);
// Output: [Java, Spring, AWS, Docker, Kubernetes]
✅ Why use flatMap()
?
- Converts Stream<Stream<T>> to a single Stream<T>
- Ideal for flattening nested collections
✅ 20. CollectingAndThen() Example – Make List Unmodifiable
List<String> names = Arrays.asList("Aftab", "Neha", "Ravi");
List<String> unmodifiableList = names.stream()
.map(String::toUpperCase)
.collect(Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList
));
System.out.println(unmodifiableList);
// Output: [AFTAB, NEHA, RAVI]
unmodifiableList.add("Test"); // Throws UnsupportedOperationException
✅ Why use collectingAndThen()
?
- Performs a post-processing transformation after collecting
- Useful to wrap collections (e.g., make them immutable)