Java SE 8 Programming: Interfaces, Lambda Expressions, Collections, and Generics