2359. Java 8 - Lazy Execution with LambdaLazy and Supplier
Functional Interfaces in Java 8.
1. Examples
modern java page 222.
if (logger.isLoggable(Log.FINER)) {
logger.finer("Problem: " + generateDiagnostic());
}
logger.log(Level.FINER, "Problem: " + generateDiagnostic());
public void log(Level level, Supplier<String> msgSupplier)
logger.log(Level.FINER, () -> "Problem: " + generateDiagnostic());
another example
public class NonLazyCodeExample {
public static void main(String args[]) {
final int number = 4;
final boolean computeResult = compute(number);
final boolean processResult = process(number);
if (computeResult && processResult) {
System.out.println("TRUE");
} else {
System.out.println("FALSE");
}
}
public static boolean compute(final int number) {
System.out.println("computing number : " + number);
return number > 5 ? true : false;
}
public static boolean process(final int number) {
System.out.println("processing number : " + number);
return number % 3 == 0 ? true : false;
}
}
logging function in lambda.
List<Integer> result = numbers.stream()
.peek(x -> System.out.println("from stream: " + x))
.map(x -> x + 17)
.peek(x -> System.out.println("after map: " + x))
.filter(x -> x % 2 == 0)
.peek(x -> System.out.println("after filter: " + x))
.limit(3)
.peek(x -> System.out.println("after limit: " + x))
.collect(toList());
This code produces useful output at each step of the pipeline:
from stream: 2
after map: 19
from stream: 3
after map: 20
after filter: 20
after limit: 20
from stream: 4
after map: 21
from stream: 5
after map: 22
after filter: 22
after limit: 22