Java Topics
Stream API
Last Updated : 26 May, 2026
title: Stream API in Java 8
title: Stream API in Java 8 description: Java 8 Stream API ka complete guide
Collection processing ka functional style. Lazy evaluation, chaining possible.
Stream kya hai?
Data elements ki pipeline. Source → Intermediate operations → Terminal operation.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
// Stream pipeline
int sum = numbers.stream() // Source
.filter(n -> n % 2 == 0) // Intermediate: Even numbers
.mapToInt(Integer::intValue) // Intermediate: Integer to int
.sum(); // Terminal: Sum
System.out.println("Sum of evens: " + sum); // 30Stream Create karna
// Collection se
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> s1 = list.stream();
Stream<String> s2 = list.parallelStream(); // Parallel processing
// Array se
Stream<Integer> s3 = Arrays.stream(new Integer[]{1, 2, 3});
// Static factory
Stream<String> s4 = Stream.of("x", "y", "z");
Stream<Integer> s5 = Stream.iterate(0, n -> n + 2).limit(5); // 0,2,4,6,8
Stream<Double> s6 = Stream.generate(Math::random).limit(3);Intermediate Operations (Lazy)
List<String> names = Arrays.asList("Ram", "Shyam", "Geeta", "Rita", "Mohan");
// filter — condition match karo
names.stream().filter(s -> s.length() > 3) // Shyam, Geeta, Rita, Mohan
// map — transform each element
names.stream().map(String::toUpperCase) // RAM, SHYAM, ...
names.stream().map(String::length) // 3, 5, 5, 4, 5
// flatMap — flatten nested streams
List<List<Integer>> nested = Arrays.asList(Arrays.asList(1,2), Arrays.asList(3,4));
nested.stream().flatMap(Collection::stream) // 1, 2, 3, 4
// distinct — unique elements
Stream.of(1,2,2,3,3,3).distinct() // 1, 2, 3
// sorted — sort karo
names.stream().sorted() // Alphabetical
names.stream().sorted(Comparator.reverseOrder())
// limit / skip
names.stream().limit(3) // First 3
names.stream().skip(2) // Skip first 2
// peek — side effect (debugging)
names.stream().peek(System.out::println).filter(s -> s.length() > 3)Terminal Operations (Eager)
// collect
List<String> result = names.stream().filter(s -> s.startsWith("R")).collect(Collectors.toList());
Set<String> set = names.stream().collect(Collectors.toSet());
String joined = names.stream().collect(Collectors.joining(", ")); // "Ram, Shyam, ..."
Map<Integer, List<String>> byLength = names.stream().collect(Collectors.groupingBy(String::length));
// forEach
names.stream().forEach(System.out::println);
// count
long count = names.stream().filter(s -> s.length() > 3).count();
// findFirst / findAny
Optional<String> first = names.stream().filter(s -> s.startsWith("R")).findFirst();
// anyMatch / allMatch / noneMatch
boolean anyR = names.stream().anyMatch(s -> s.startsWith("R")); // true
boolean allLong = names.stream().allMatch(s -> s.length() > 2); // true
// reduce
int sum = Stream.of(1,2,3,4,5).reduce(0, Integer::sum); // 15
Optional<Integer> max = Stream.of(3,1,4,1,5).reduce(Integer::max);
// min / max
Optional<String> shortest = names.stream().min(Comparator.comparingInt(String::length));
// toArray
Object[] arr = names.stream().toArray();
String[] strArr = names.stream().toArray(String[]::new);Primitive Streams
IntStream.range(1, 6) // 1,2,3,4,5
IntStream.rangeClosed(1, 5) // 1,2,3,4,5
IntStream.of(1,2,3).sum() // 6
IntStream.of(1,2,3).average() // OptionalDouble
// int to Integer
IntStream.range(1,6).boxed() // Stream<Integer>
// Integer to int
Stream.of(1,2,3).mapToInt(Integer::intValue).sum()Exam Focus
Revise definitions, diagrams, examples, and short-answer points for Stream API.
Interview Use
Prepare one clear explanation, one practical example, and one common mistake for this Java topic.
Search Terms
java, java programming, core java, java master course, java notes, master, course, features
Related Java Topics