1 Taking Java to the Next Level
1.1 From External to Internal Iteration
1.2 From Collections to Streams
1.3 From Sequential to Parallel
2 The Basics of Java Lambda Expressions
2.1 What Is a Lambda Expression?
2.2 Lambdas vs. Anonymous Inner Classes
2.2.2 Scoping Rules for Lambdas
2.6 Method and Constructor References
2.6.1 Static Method References
2.6.2 Instance Method References
2.7.1 What Exactly Is a Function Type?
2.7.2 Matching a Function Type
2.8.1 Overloading with Lambda Expressions
2.8.2 Overloading with Method References
3 Introduction to Streams and Pipelines
4 Ending Streams: Collection and Reduction
4.1.1 Stand-alone Predefined Collectors
4.1.4 Worked Example: Most Popular Topics
4.3.2 Worked Example: Finding My Books
4.4.1 Reduction over Primitives
4.4.2 Reduction over Reference Streams
4.4.3 Composing Collectors with Reduction
5 Starting Streams: Sources and Spliterators
5.2 Spliterators and Fork/Join
5.2.1 Streams from Spliterators
5.4 Worked Example: Recursive grep
6.1.1 Measuring a Dynamic Runtime
6.1.2 The Java Microbenchmarking Harness
6.5 Stateful and Stateless Operations
6.8.2 Performance Analysis: Point Grouping
6.8.3 Performance Analysis: Finding My Books
7 API Evolution with Default Methods
7.2 What Role for Abstract Classes?
7.4 Default Methods and Inheritance
3.139.240.119