Java Streams 1750533436
Java Streams 1750533436
filter map
collect forEach
java
java
java
// Stream.of
Stream<Integer> numbersStream = Stream.of(1, 2, 3, 4, 5);
// Stream.iterate (infinite)
Stream<Integer> infiniteStream = Stream.iterate(0, n -> n + 2); // even numbers
// Stream.generate (infinite)
Stream<Double> randomNumbers = Stream.generate(Math::random);
java
map(Function<T,R>) stream.map(String::toUpperCase)
stream.flatMap(s ->
flatMap(Function<T,Stream<R>>)
Arrays.stream(s.split("")))
distinct() stream.distinct()
sorted() stream.sorted()
sorted(Comparator<T>) stream.sorted(Comparator.reverseOrder()
peek(Consumer<T>) stream.peek(System.out::println)
limit(long n) stream.limit(5)
skip(long n) stream.skip(2)
forEach(Consumer<T>) stream.forEach(System.out::println)
collect(Collector<T,A,R>) stream.collect(Collectors.toList())
count() stream.count()
stream.anyMatch(s ->
anyMatch(Predicate<T>)
s.startsWith("A"))
findFirst() stream.findFirst()
findAny() stream.findAny()
min(Comparator<T>) stream.min(Comparator.naturalOrder())
max(Comparator<T>) stream.max(Comparator.naturalOrder())
toArray() stream.toArray()
java
java
java
// Natural ordering
List<String> sortedNames = names.stream()
.sorted()
.collect(Collectors.toList());
// Result: [Bob, Charlie, David, Eva, Naveen]
// Custom ordering
List<String> sortedByLength = names.stream()
.sorted(Comparator.comparing(String::length))
.collect(Collectors.toList());
// Result: [Bob, Eva, David, Naveen, Charlie]
java
// Finding maximum
int max = numbers.stream()
.reduce(Integer.MIN_VALUE, Integer::max);
// Result: 5
// Concatenating strings
String concatenated = Stream.of("A", "B", "C")
.reduce("", String::concat);
// Result: "ABC"
java
// To List
List<String> namesList = names.stream()
.filter(n -> n.length() > 3)
.collect(Collectors.toList());
// To Set
Set<String> namesSet = names.stream()
.filter(n -> n.length() > 3)
.collect(Collectors.toSet());
// To Map
Map<String, Integer> nameLengthMap = names.stream()
.collect(Collectors.toMap(
Function.identity(), // Key mapper
String::length // Value mapper
));
// Result: {Naveen=6, Bob=3, Charlie=7, David=5, Eva=3}
// Joining strings
String joined = names.stream()
.collect(Collectors.joining(", "));
// Result: "Naveen, Bob, Charlie, David, Eva"
// Grouping
Map<Integer, List<String>> groupedByLength = names.stream()
.collect(Collectors.groupingBy(String::length));
// Result: {3=[Bob, Eva], 5=[David], 6=[Naveen], 7=[Charlie]}
// Partitioning
Map<Boolean, List<String>> partitioned = names.stream()
.collect(Collectors.partitioningBy(n -> n.length() > 4));
// Result: {false=[Bob, Eva], true=[Naveen, Charlie, David]}
java
// Count
long count = numbers.stream().count();
// Result: 10
// Sum
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
// Result: 55
// Average
OptionalDouble average = numbers.stream().mapToInt(Integer::intValue).average();
// Result: OptionalDouble[5.5]
// Statistics
IntSummaryStatistics stats = numbers.stream().mapToInt(Integer::intValue).summaryStatis
// Result: IntSummaryStatistics{count=10, sum=55, min=1, average=5.500000, max=10}
java
// anyMatch
boolean anyStartsWithN = names.stream()
.anyMatch(name -> name.startsWith("N"));
// Result: true
// allMatch
boolean allLongerThan2 = names.stream()
.allMatch(name -> name.length() > 2);
// Result: true
// noneMatch
boolean noneStartWithZ = names.stream()
.noneMatch(name -> name.startsWith("Z"));
// Result: true
// findFirst
Optional<String> first = names.stream()
.filter(name -> name.startsWith("D"))
.findFirst();
// Result: Optional[David]
// Creating IntStream
IntStream intStream = IntStream.range(1, 6); // 1, 2, 3, 4, 5
IntStream closedRange = IntStream.rangeClosed(1, 5); // 1, 2, 3, 4, 5
java
// CORRECT APPROACH:
String result = IntStream.range(0, 1000)
.parallel()
.mapToObj(String::valueOf)
.collect(Collectors.joining());
java
// Instead of:
stream.map(s -> s.toUpperCase())
// Use:
stream.map(String::toUpperCase)
java
// BAD:
List<String> collected = new ArrayList<>();
stream.forEach(s -> collected.add(s));
// GOOD:
List<String> collected = stream.collect(Collectors.toList());
java
java
java
// INCORRECT:
stream.filter(predicate); // Does nothing without terminal operation
// CORRECT:
stream.filter(predicate).collect(Collectors.toList());
java
// Correct:
Stream.iterate(0, n -> n + 1).limit(100).forEach(System.out::println);
java
// Instead of:
stream.filter(s -> s.length() > 3).collect(Collectors.toList());
// Consider:
stream.collect(Collectors.filtering(s -> s.length() > 3, Collectors.toList()));
java
class Person {
private String name;
private int age;
System.out.println(wordFrequency);
// Result: {hello=2, world=1, java=3, streams=2, are=1, powerful=1, in=1}
java
System.out.println(result);
// Result: "Fruits: [apple, banana, cherry, date]"