Getting Started
  • About Course
Slides for the course
  • Slides
Why Java 8 ?
  • Why Java 8 is important ?
  • Imperative vs Declarative Programming - Example 1
  • Imperative vs Declarative Programming - Example 2
WorkSpace Setup - Mac
  • Setting up Java
  • Setting up IntelliJ
WorkSpace Setup - Windows
  • Setting up Java
  • Setting up IntelliJ
Source Code for this Course
  • Source Code
Introduction to Lambda
  • What is Lambda ?
  • Lab : Implement Runnable using Lambda
  • Lab : Implement Comparator using Lambda
Lambdas and Functional Interfaces
  • Introduction to Functional Interfaces
  • Lab : Consumer Functional Interface - Part 1
  • Lab : Consumer Functional Interface - Part 2
  • Lab : BiConsumer Functional Interface
  • Lab : Predicate - Functional Interface - Part 1
  • Lab : Predicate - Functional Interface - Part 2
  • Lab : Combining Predicate + Consumer
  • Lab : BiPredicate
  • Lab : Function - Function Interface- Part 1
  • Lab : Function - Function Interface- Part 2
  • Lab : BiFunction Functional Interface
  • Lab : UnaryOperaror and BinaryOperator Functional Interface
  • Lab : Supplier - Functional Interface
Constructor and Method References
  • Method Reference
  • Lab : Method Reference - Function
  • Lab : Method Reference - Consumer
  • Lab : Refactor Lambda Expression to Method Reference
  • Constructor Reference
Lambdas and Local variables ( Effectively Final )
  • Lab : Local Variables in Lambda Expression
  • Effectively Final Variables in Lambda and its advantages
Streams API
  • Introduction to Streams
  • How Stream API works ?
  • Comparing Streams vs Collections
  • Lab : How to debug Stream Operations?
Stream API - Operations
  • Lab : Stream Operation - map()
  • Lab : Stream Operation - flatMap()
  • Lab : Stream Operation - distinct() , count(), sorted()
  • Lab : Stream Operation - Customized sort using Comparator
  • Lab : Stream Operation - filter()
  • Lab : Stream Operation - reduce() - Part 1
  • Lab : Stream Operation - reduce() - Part 2
  • Lab : Stream Operations - Map + Filter + Reduce Pattern
  • Lab : Stream Operation : max using reduce() function
  • Lab : Stream Operation - min() using reduce function.
  • Lab : Stream Operation - limit() and skip()
  • Lab : Stream Operation allMatch(), anyMatch() and noneMatch()
  • Lab : Stream Operation - findAny() and findFirst()
  • Streams: Short Circuiting Operations
Streams API - Factory Methods
  • Lab : Streams Operation - of(), iterate(), generate()
Streams API - Numeric Streams
  • Introduction to Numeric Streams
  • Lab : NumericStream - range() , rangeClosed(), count(), foreach()
  • Lab : NumericStream - sum() , max(), min(), average()
  • Lab : NumericStream - Boxing ,Unboxing, mapToInt()
  • Lab : NumericStream - mapToObj(), mapToDouble(), maptoLong()
Streams API - Terminal Operations
  • Lab : joining()
  • Lab : counting()
  • Lab : mapping()
  • Lab : minBy() , maxBy() using collect()
  • Lab : sum() , avg() using collect()
  • Lab : groupingBy() - Type 1
  • Lab : groupingBy() - Type 2
  • Lab : groupingBy() - Type 3
  • Lab : groupingBy() - maxBy(), minBy(), collectingAndThen()
  • Lab : partitioningBy()
Streams API - Parallel Processing
  • Introduction to Parallel Streams
  • Lab : Comparing Performance of Sequential vs Parallel Streams
  • How Parallel Stream works ?
  • Lab : Build a Parallel Stream Pipeline
  • Lab : When not to use Parallel Stream - Example 1
  • Lab : When not to use Parallel Stream ? - Part 2
Optional
  • Introduction to Optional
  • Lab : Optional : empty(), ofNullable(), Of()
  • Lab : orElse(), orElseGet() ,orElseThrow()
  • Lab : ifPresent(), isPresent()
  • Lab : map(), flatMap(), filter() - Part1
  • Lab : map(), flatMap(), filter() - Part2
Default/Static Methods in Interfaces
  • Introduction to Default/static Methods
  • Lab : Default Methods
  • Lab : Exploring sort() operations using Comparator - Part 1