Problem:
Using Java 8 Streams, how do you find the first odd number in a list efficiently, without manually looping?
✅ Example:
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
public class FirstOddNumber {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(2, 4, 6, 8, 17, 9, 24, 19);
Optional<Integer> firstOdd = numbers.stream() // Use stream(), parallelStream() is not necessary here
.filter(element -> element % 2 != 0) // Filter odd numbers
.findFirst(); // Find the first matching element
firstOdd.ifPresent(System.out::println);
}
}
✅ Output:
17
✅ ✅ Explanation:
- We create a list of numbers:
[2, 4, 6, 8, 17, 9, 24, 19]
- We use
.stream()
(sequential stream is sufficient for this purpose):numbers.stream()
.filter(ele -> ele % 2 != 0)
filters all odd numbers:- Result after filtering:
[17, 9, 19]
.
- Result after filtering:
.findFirst()
returns the first element in encounter order, wrapped inOptional<Integer>
.- We print the result using:
firstOdd.ifPresent(System.out::println);
✅ Important Note:
- Avoid using
.parallelStream()
here because it may not guarantee order in finding the first element.
Always prefer.stream()
when order matters.