/*
* Copyright (C) 2007-2015, GoodData(R) Corporation. All rights reserved.
*/
package net.javacrumbs.demos.streams;
import net.javacrumbs.common.Person;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.IntStream;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.toSet;
import static net.javacrumbs.common.Person.Sex.FEMALE;
import static net.javacrumbs.common.Person.Sex.MALE;
// LambdaMetafactory
public class StreamsDeepDive {
public static void lambdas() {
Set<Runnable> set1 = new HashSet<>();
Set<Runnable> set2 = new HashSet<>();
int j = 9;
IntStream.range(0, 10).forEach(i -> {
set1.add(() -> System.out.println("Hi"));
set2.add(() -> System.out.println("Hi" + j));
});
// Implementation specific
System.out.println("Simple lambdas: " + set1.size());
System.out.println("Enclosing lambdas: " + set2.size());
}
public static void lambdas2() {
//uglyyy
Set<Runnable> set1 = IntStream.range(0, 10)
.mapToObj(i -> (Runnable) () -> System.out.println("Hi"))
.collect(toSet());
Set<Runnable> set2 = IntStream.range(0, 10)
.mapToObj(i -> (Runnable) () -> System.out.println("Hi " + i))
.collect(toSet());
// Implementation specific
System.out.println("Simple lambdas: " + set1.size());
System.out.println("Enclosing lambdas: " + set2.size());
}
public static void streams() {
List<Person> people = asList(
new Person("Eve", 23, MALE),
new Person("John", 25, MALE),
new Person("Billy", 25, FEMALE),
new Person(null, 30, MALE)
);
people.stream()
.filter(p -> p.getName() != null)
.mapToInt(p -> p.getName().length())
.max()
.ifPresent(System.out::println);
people.stream()
.map(Person::getName)
// .filter(Objects::nonNull)
.mapToInt(String::length)
.forEach(System.out::println);
}
public static void main(String[] args) {
lambdas();
streams();
}
public static int length(String string) {
return string.length();
}
}