package com.github.andbed.cleanarch.learningtest.java8; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; public class Example1 { public static void main(String[] args) { } public static void oldFashionedSimpleFor() { List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6); int total = 0; for (int i=0; i<ints.size(); i++) { total += ints.get(i); } System.out.println(total); } public static void oldFashionedComplexFor() { List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6); List<Integer> evenDoubles = new ArrayList<>(); for (int i=0; i<ints.size(); i++) { if (ints.get(i) % 2 == 0) { Integer doubled = ints.get(i) * 2; evenDoubles.add(doubled); } } System.out.println(evenDoubles); } public static void functionalSimpleFor() { List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6); Integer total = ints.stream() .mapToInt(e -> e * 2) .sum(); System.out.println(total); } public static void functionalComplexFor() { List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6); List<Integer> evenDoubles = ints.stream() .filter(e -> e % 2 == 0) .map(e -> e * 2) .collect(Collectors.toList()); System.out.println(evenDoubles); universalListProcessor(e -> e * 2, e -> e % 2 == 0); } public static void universalListProcessor(Function<Integer, Integer> func, Predicate<Integer> pred) { List<Integer> collection = Arrays.asList(1, 2, 3, 4, 5, 6); List<Integer> col = collection.stream() .filter(pred) .map(func) .collect(Collectors.toList()); System.out.println(col); } }