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: 451 days ago