Iterations
Streams allow us to write collections code at a higher level of abstraction.
/**
* Streams allow us to write collections code ...
* at a higher level of abstraction.
*
* Iterator - external iteration
* Stream - internal interation
*/
package com.minte9.lambdas.streams;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Iterations {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3);
int count = 0;
for(int n : numbers) {
if (n <= 2) count++;
}
System.out.println(count); // 2
Iterator<Integer> it = numbers.iterator();
while(it.hasNext()) {
int n = it.next();
if (n <= 2) count++;
}
System.out.println(count); // 4
long total = 0;
total = numbers.stream()
.filter(n -> n <= 2)
.count();
System.out.println(total); // 2
}
}
Lazy
Stream library was design to iterate only once (lazy evaluation).
/**
* The stream library was design to iterate only once
* (lazy evaluation)
*
* Methods that generate a final value out of the Stream sequence ...
* are called "eager"
*
* Code without an eager method doesn't print anything ...
* due to lazy evaluation
*/
package com.minte9.lambdas.streams;
import java.util.Arrays;
import java.util.List;
public class Lazy {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3);
numbers.stream().filter(n -> {
System.out.println(n);
return n <= 2;
}); // nothing
numbers.stream().filter(n -> {
System.out.println(n);
return n <= 2;
}).count(); // 1 2 3 - Look Here
}
}
Last update: 451 days ago