Problem:
Using Java 8 Streams, how do you quickly find minimum, maximum, sum, average, and count of numbers in a list without writing separate loops?
✅ Example:
import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
public class SummaryStatisticsExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 3, 9, 1, 7);
// Generate summary statistics
IntSummaryStatistics stats = numbers.stream()
.mapToInt(n -> n) // Convert Integer to int
.summaryStatistics();
// Print results
System.out.println("Minimum: " + stats.getMin());
System.out.println("Maximum: " + stats.getMax());
System.out.println("Sum: " + stats.getSum());
System.out.println("Average: " + stats.getAverage());
System.out.println("Count: " + stats.getCount());
}
}
✅ Explanation:
- numbers.stream(): Create a stream of integers from the list.
- mapToInt(n -> n): Converts the
Stream<Integer>into anIntStream. This is necessary becauseIntSummaryStatisticsworks with primitiveint. - summaryStatistics(): This terminal operation generates an
IntSummaryStatisticsobject, which contains:- Minimum value →
getMin() - Maximum value →
getMax() - Sum of all numbers →
getSum() - Average →
getAverage() - Count of elements →
getCount()
- Minimum value →
- The results are printed using
System.out.println.
✅ Output:
Minimum: 1
Maximum: 9
Sum: 25
Average: 5.0
Count: 5