Introduction
Part One | Class Design
One . . . Encapsulation and Immutable Classes
Two . . . Inheritance and Polymorphism
Three . . . Inner Classes
Four . . . Interfaces
Five . . . Enumerations
Part Two | Generics and Collections
Six . . . Generics
Seven . . . Collections
Part Three | Lambda Expressions
Eight . . . Functional Interfaces
Nine . . . Lambda Expressions
Ten . . . Java Built-In Lambda Interfaces
Eleven . . . Method References
Part Four | Streams and Collections
Twelve . . . Streams
Thirteen . . . Iterating and Filtering Collections
Fourteen . . . Optional Class
Fifteen . . . Data Search
Sixteen . . . Stream Operations on Collections
Seventeen . . . Parallel Streams
Eighteen . . . Peeking, Mapping, Reducing and Collecting
Nineteen . . . Files and Streams
Part Five | Exceptions and Assertions
Twenty . . . Exceptions
Twenty-one . . . Assertions
Part Six | Date/Time API
Twenty-two . . . Core Date/Time Classes
Twenty-three . . . Time Zones and Daylight Savings
Part Seven | Java I/O
Twenty-four . . . Java I/O Fundamentals
Twenty-five . . . NIO.2
Part Eight | Concurrency
Twenty-six . . . Thread Basics
Twenty-seven . . . Concurrency
Twenty-eight . . . Fork/Join Framework
Part Nine | JDBC and Localization
Twenty-nine . . . JDBC API
Thirty . . . Localization