| S.No |
Topic |
Sub-Topics |
| 1 | Java 8 Overview | Java 8 introduction, Why Java 8, Major enhancements, Backward compatibility, Java 8 use cases |
| 2 | Functional Programming | Functional programming basics, Pure functions, Immutability, Stateless behavior, Lambda-driven design |
| 3 | Lambda Expressions - Basics | Lambda syntax, Lambda parameters, Lambda body, Lambda vs anonymous class, Lambda advantages |
| 4 | Lambda Expressions - Advanced | Lambda with collections, Lambda with threads, Lambda with methods, Effectively final variables, Lambda limitations |
| 5 | Functional Interfaces | @FunctionalInterface , Single abstract method, Lambda compatibility, Custom functional interfaces |
| 6 | Built-in Functional Interfaces | Predicate, Function, Consumer, Supplier, Bi-functional interfaces |
| 7 | Predicate Interface | test() method, Predicate chaining, and(), or(), negate(), Real-time examples |
| 8 | Function Interface | apply() method, Function chaining, compose(), andThen(), Real-time use cases |
| 9 | Consumer Interface | accept() method, Consumer chaining, forEach usage, Logging examples, Printing data |
| 10 | Supplier Interface | get() method, Lazy value generation, Supplier vs Function, Factory usage, Random value generation |
| 11 | Method References | Static method reference, Instance method reference, Constructor reference, Syntax (::), Lambda replacement |
| 12 | Stream API - Introduction | What is stream, Stream vs collection, Stream pipeline, Intermediate operations, Terminal operations |
| 13 | Stream Creation | Stream from collection, Stream.of(), Arrays.stream(), Infinite streams, Empty streams |
| 14 | Stream Intermediate Operations | filter(), map(), flatMap(), distinct(), sorted() |
| 15 | Stream Terminal Operations | forEach(), collect(), reduce(), count(), findFirst() |
| 16 | Stream Collectors | Collectors.toList(), toSet(), toMap(), groupingBy(), partitioningBy() |
| 17 | Stream Reduction Operations | reduce() method, Identity value, Accumulator, Combiner, Aggregation examples |
| 18 | Parallel Streams | parallelStream(), ForkJoinPool, Performance benefits, Thread safety issues, When to use parallel streams |
| 19 | Optional Class | Optional creation, isPresent(), ifPresent(), orElse(), orElseThrow() |
| 20 | Default Methods in Interface | Default method syntax, Multiple inheritance resolution, Diamond problem, Overriding defaults, Use cases |
| 21 | Static Methods in Interface | Static method rules, Invocation syntax, Difference from default methods, Utility methods, Best practices |
| 22 | ForEach Method | Iterable forEach(), Lambda usage, Method reference usage, Internal iteration, Comparison with loops |
| 23 | Nashorn JavaScript Engine | Nashorn overview, JavaScript execution, ScriptEngine API, Java-JS interaction, Use cases |
| 24 | New Date & Time API - Basics | Problems with old Date API, LocalDate, LocalTime, LocalDateTime, Immutability |
| 25 | New Date & Time API - Advanced | ZonedDateTime, Period, Duration, DateTimeFormatter, Time zones |
| 26 | CompletableFuture | Future limitations, CompletableFuture basics, Async execution, thenApply(), thenAccept() |
| 27 | Collectors Grouping & Partitioning | groupingBy(), partitioningBy(), downstream collectors, Multi-level grouping, Real examples |
| 28 | Stream Performance | Lazy evaluation, Short-circuiting, Stream reuse rules, Avoiding side effects, Performance tuning |
| 29 | Java 8 Coding Patterns | Filter-map-reduce pattern, Functional pipelines, Optional usage patterns, Lambda best practices, Stream refactoring |
| 30 | Java 8 Revision & Interview Prep | Java 8 feature recap, Common interview questions, Coding scenarios, Performance discussions, Best practices |