Here is a good talk by Joshua Bloch. Among other things, he touches on best practices for the use of streams and lambdas in Java 8+. It has the following outline:
- Prefer lambdas to anonymous classes
- Prefer method references to lambdas
- Favor standard functional interfaces
- Use streams juidiciously
- Use caution when making streams parallel