September 2019
Intermediate to advanced
816 pages
18h 47m
English
Some operations specific to lambda expressions return Optional (for example, findFirst(), findAny(), reduce(), and so on). Trying to address these Optional classes via the isPresent()-get() pair is a cumbersome solution because we have to break the chain of lambdas, add some conditional code via the if-else blocks, and consider resuming the chain.
The following snippet of code shows this practice:
private static final String NOT_FOUND = "NOT FOUND";List<Book> books...;...// Avoidpublic String findFirstCheaperBook(int price) { Optional<Book> book = books.stream() .filter(b -> b.getPrice()<price) .findFirst(); if (book.isPresent()) { return book.get().getName(); } else { return NOT_FOUND; }}
One step further ...