Java Stream API Coding Problems
Below are some common java stream API coding problems and their outputs.These java stream API coding problems are designed to test your understanding of core stream API concept. Preparing for these java stream API coding problems will help you stand out and showcase your skill during technical interviews

1.Filtering Even Numbers from a List
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static List<Integer> filterEvenNumbers(List<Integer> numbers) {
return numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
System.out.println(filterEvenNumbers(numbers)); // Output: [2, 4, 6, 8, 10]
}
}
Output:
[2, 4, 6, 8, 10]
2.Sum of Even Numbers
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static int sumEvenNumbers(List<Integer> numbers) {
return numbers.stream()
.filter(n -> n % 2 == 0)
.mapToInt(Integer::intValue)
.sum();
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
System.out.println(sumEvenNumbers(numbers)); // Output: 30
}
}
Output:
30
3.Find the Maximum Number
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static int findMax(List<Integer> numbers) {
return numbers.stream()
.max(Integer::compareTo)
.orElseThrow(() -> new NoSuchElementException(“No value present”));
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(10, 20, 30, 40, 50);
System.out.println(findMax(numbers)); // Output: 50
}
}
Output:
50
4.Convert List of Strings to Uppercase
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static List<String> toUppercase(List<String> words) {
return words.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
}
public static void main(String[] args) {
List<String> words = Arrays.asList(“apple”, “banana”, “cherry”);
System.out.println(toUppercase(words)); // Output: [APPLE, BANANA, CHERRY]
}
}
Output:
[APPLE, BANANA, CHERRY]
5.Count the Occurrences of a Character in a String
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static long countOccurrences(List<String> words, char target) {
return words.stream()
.flatMapToInt(String::chars)
.filter(c -> c == target)
.count();
}
public static void main(String[] args) {
List<String> words = Arrays.asList(“apple”, “banana”, “avocado”);
System.out.println(countOccurrences(words, ‘a’)); // Output: 7
}
}
Output:
7
6.Group Elements by Length
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static Map<Integer, List<String>> groupByLength(List<String> words) {
return words.stream()
.collect(Collectors.groupingBy(String::length));
}
public static void main(String[] args) {
List<String> words = Arrays.asList(“apple”, “banana”, “pear”, “kiwi”, “peach”);
System.out.println(groupByLength(words)); // Output: {4=[pear, kiwi], 5=[apple, peach], 6=[banana]}
}
}
Output:
{4=[pear, kiwi], 5=[apple, peach], 6=[banana]}
7.Flatten a List of Lists
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static List<Integer> flattenList(List<List<Integer>> listOfLists) {
return listOfLists.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
}
public static void main(String[] args) {
List<List<Integer>> listOfLists = Arrays.asList(
Arrays.asList(1, 2, 3),
Arrays.asList(4, 5),
Arrays.asList(6, 7, 8)
);
System.out.println(flattenList(listOfLists)); // Output: [1, 2, 3, 4, 5, 6, 7, 8]
}
}
Output:
[1, 2, 3, 4, 5, 6, 7, 8]
8.Sort a List of Integers
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static List<Integer> sortList(List<Integer> numbers) {
return numbers.stream()
.sorted()
.collect(Collectors.toList());
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 2, 8, 1, 4);
System.out.println(sortList(numbers)); // Output: [1, 2, 4, 5, 8]
}
}
Output:
[1, 2, 4, 5, 8]
9.Remove Duplicates from a List
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static List<Integer> removeDuplicates(List<Integer> numbers) {
return numbers.stream()
.distinct()
.collect(Collectors.toList());
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
System.out.println(removeDuplicates(numbers)); // Output: [1, 2, 3, 4, 5]
}
}
Output:
[1, 2, 3, 4, 5]
10.Concatenate Strings from a List
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static String concatenateStrings(List<String> words) {
return words.stream()
.collect(Collectors.joining(” “));
}
public static void main(String[] args) {
List<String> words = Arrays.asList(“Java”, “Stream”, “API”, “is”, “awesome”);
System.out.println(concatenateStrings(words)); // Output: Java Stream API is awesome
}
}
Output:
Java Stream API is awesome
11.Find the First Element in a Stream
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static Optional<Integer> findFirstElement(List<Integer> numbers) {
return numbers.stream()
.findFirst();
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(10, 20, 30, 40, 50);
System.out.println(findFirstElement(numbers).orElse(-1)); // Output: 10
}
}
Output:
10
12.Count the Number of Elements in a Stream
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static long countElements(List<String> words) {
return words.stream()
.count();
}
public static void main(String[] args) {
List<String> words = Arrays.asList(“apple”, “banana”, “cherry”, “date”);
System.out.println(countElements(words)); // Output: 4
}
}
Output:
4
13.Sum of Squares of Odd Numbers
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static int sumOfSquaresOfOddNumbers(List<Integer> numbers) {
return numbers.stream()
.filter(n -> n % 2 != 0) // Filter odd numbers
.map(n -> n * n) // Square each odd number
.mapToInt(Integer::intValue)
.sum();
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
System.out.println(sumOfSquaresOfOddNumbers(numbers)); // Output: 84 (1^2 + 3^2 + 5^2 + 7^2)
}
}
Output:
84
14.Find All Palindromes in a List of Strings
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static List<String> findPalindromes(List<String> words) {
return words.stream()
.filter(word -> word.equals(new StringBuilder(word).reverse().toString()))
.collect(Collectors.toList());
}
public static void main(String[] args) {
List<String> words = Arrays.asList(“madam”, “apple”, “racecar”, “banana”, “level”);
System.out.println(findPalindromes(words)); // Output: [madam, racecar, level]
}
}
Output:
[madam, racecar, level]
15.Flatten and Sort Nested Lists
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static List<Integer> flattenAndSort(List<List<Integer>> listOfLists) {
return listOfLists.stream()
.flatMap(List::stream) // Flatten the list
.sorted() // Sort the elements
.collect(Collectors.toList());
}
public static void main(String[] args) {
List<List<Integer>> listOfLists = Arrays.asList(
Arrays.asList(3, 5, 1),
Arrays.asList(7, 4, 6),
Arrays.asList(8, 9, 2)
);
System.out.println(flattenAndSort(listOfLists)); // Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
}
}
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
16.Get the Length of the Longest String
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static int findLongestStringLength(List<String> words) {
return words.stream()
.mapToInt(String::length)
.max()
.orElse(0); // Return 0 if the list is empty
}
public static void main(String[] args) {
List<String> words = Arrays.asList(“apple”, “banana”, “kiwi”, “orange”);
System.out.println(findLongestStringLength(words)); // Output: 6
}
}
Output:
6
17.Get the Unique First Letters of Words
import java.util.*;
import java.util.stream.*;
public class StreamExample {
public static Set<Character> getUniqueFirstLetters(List<String> words) {
return words.stream()
.map(word -> word.charAt(0)) // Get the first character
.collect(Collectors.toSet());
}
public static void main(String[] args) {
List<String> words = Arrays.asList(“apple”, “banana”, “cherry”, “avocado”);
System.out.println(getUniqueFirstLetters(words)); // Output: [a, b, c]
}
}
Output:
[a, b, c]