package lambdasinaction.chap10;
import java.util.*;
import static java.util.stream.Collectors.toSet;
public class OptionalMain {
public String getCarInsuranceName(Optional<Person> person) {
return person.flatMap(Person::getCar)
.flatMap(Car::getInsurance)
.map(Insurance::getName)
.orElse("Unknown");
}
public Set<String> getCarInsuranceNames(List<Person> persons) {
return persons.stream()
.map(Person::getCar)
.map(optCar -> optCar.flatMap(Car::getInsurance))
.map(optInsurance -> optInsurance.map(Insurance::getName))
.flatMap(Optional::stream)
.collect(toSet());
}
}