# minte9 LearnRemember

### 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: 357 days ago