
Explore a Java 8+ runnable example by implementing an animal interface with and without lambda expressions, run threads to sum ten numbers, and print the result 45.
Explore the Java 8+ BiPredicate functional interface by building a two-argument predicate that checks online status and years of experience, and apply a corresponding consumer to print matching instructors.
Explore the Java binary operator interface, a function interface that takes two values of the same type and returns a value of that type, with integer, long, and double specializations.
Explain the Java supplier interface, a no-argument function that returns a value via get, acting as a factory; implement and reuse a single supplier for tasks like generating random numbers.
Learn to use constructor references with a functional interface to instantiate objects, design an instructor factory interface with a matching abstract method, and implement the example.
Discover how the Java 8 stream API adds a pipeline layer over collections, enabling map, filter, sort, collect, and reduce with lambda expressions and parallel processing.
Debug stream operations in Java using two approaches: the trace and chain tool in the debugger, and the stream API's peek method, and observe elements through filter and collect steps.
Explore the map operation in streams to convert elements, map to new forms (like names to uppercase), and collect results into lists or sets while preserving order.
Learn how flatMap combines map and flatten operations to flatten a stream of instructor courses, collect results, and remove duplicates with a set.
Learn how Java streams reduce uses an identity and a binary operator to combine elements, including handling optional results and examples of sum and multiplication.
Explore map, filter, and reduce on streams to calculate total years of instructor experience, filtering online courses and using Integer::sum for efficient aggregation.
Explains Java streams limit and skip operations by taking the first n elements or skipping the first n elements, with a code example printing and collecting results from a list.
Explore collectors counting in Java streams and compare it with stream count, revealing how counting supports downstream tasks like grouping by string length.
Explore how grouping by classifier in Java 8+ uses collectors.groupingBy to categorize strings and instructors by length, gender, and experience.
Explore the second overload of groupingBy with a classifier and downstream filtering. Group names by length with a contains-e filter; classify instructors as senior or junior, filtered by online courses.
Group instructors by online versus offline courses and compute the maximum years of experience using maxBy and minBy. Use collectingAndThen and summarizingInt to derive averages and summary statistics.
******* Course Overview *******
Welcome to this Amazing course on Java Latest Programming
This course will cover important developer features added in:
Java 13, Java 12, Java 11, Java 10, Java 9, Java 8
The course will provide an in-depth understanding of modern java syntax, technology and terminology
The course is for beginners are well as for experienced programmers
If you are taking this course for an upcoming interview, this course covers most of the topics that are asked during Java programming interviews, I am telling you this from my personal experience as I asked these topics myself to gauge candidates understanding of latest java programming and it's syntax
Each of my courses come with:
Amazing Hands-on Step By Step Learning Experiences
Real Implementation Experience
The below are the list of modules covered in this course.
***************Course details**********************
Section 1: Introduction
Introduction
Windows - Java Development Kit Installation Overview
Windows - Installing Intellij IDEA
Mac - Java Development Kit Installation Overview
Mac - Installing Intellij IDEA
Intellij IDEA Configuration
Git Repository Link
Development Environment Setup - Import Code
Section 2:Lambda Expressions - Java8+
Java8+ : What is Lambda
Java8+ : Lambda Expression (Part 1)
Java8+ : Lambda Expression (Part 2)
Java8+ : Runnable Example With Lambda
Java8+ : Comparator Example With Lambda
Java8+ : Callable Example With Lambda
Section 3: Functional Interfaces and Lambdas - Java8+
Java8+ : Functional Interfaces
Java8+ : Consumer Functional Interface (Part 1)
Java8+ : Consumer Functional Interface (Part 2)
Java8+ : IntConsumer, LongConsumer, DoubleConsumer
Java8+ : BiConsumer Functional Interface (Part1)
Java8+ : BiConsumer Functional Interface (Part2)
Java8+ : Predicate Functional Interface (Part1)
Java8+ : Predicate Functional Interface (Part 2)
Java8+ : IntPredicate, LongPredicate, DoublePredicate
Java8+ : Predicate & BiConsumer
Java8+ : BiPredicate Functional Interface
Java8+ : Function (Part 1)
Java8+ : Function (Part 2)
Java8+ : BiFunction
Java8+ : Unary Operator
Java8+ : Binary Operator
Java8+ : Supplier
Java8+ : Method Reference (::)
Java8+ : Examples of Method Reference
Java8+ : Convert to Method Reference
Java8+ : Constructor Reference
Section 4:Lambda Variable Scope - Java8+
Java8+ : Variable Scope, Final & Effectively Final
Section 5:RealWorld Example Using Lambda - Java8+
Java8+ : Bank Transfer Example
Section 6:Streams - Java8+
Java8+ : Stream Introduction (Part 1)
Java8+ : Stream Introduction (Part 2)
Java8+ : Inside Streams
Java8+ : Collections vs Streams
Java8+ : Debugging Stream
Section 7:Stream Operations - Java8+
Java8+ : map()
Java8+ : flatMap()
Java8+ : distinct(), count(), sorted(), allMatch()...
Java8+ : Customized sort using comparator
Java8+ : filter()
Java8+ : reduce() (Part 1)
Java8+ : reduce (Part 2)
Java8+ : map + filter + reduce
Java8+ : max() with stream and reduce
Java8+ : min() with stream and reduce
Java8+ : limit() and skip()
Java8+ : findAny() and findFirst()
Section 8:Stream Generators - Java8+
Java8+ : Generating Stream with of(), iterate(), generate()
Section 9:Numeric Streams - Java8+
Java8+ : Introduction to Numeric Streams
Java8+ : IntStream
Java8+ : LongStream
Java8+ : DoubleStream
Java8+ : sum(), max(), min(), average()
Java8+ : Boxing, Unboxing
Java8+ : mapToObj(), mapToLong, mapToDouble()
Section 10:Collectors Operations - Java8+
Java8+ : joining
Java8+ : counting()
Java8+ : mapping()
Java8+ : minBy(), maxBy()
Java8+ : summingInt(), averagingInt()
Java8+ : groupingBy (Part 1)
Java8+ : groupingBy (Part 2)
Java8+ : groupingBy (Part 3)
Java8+ : maxBy(), minBy(), collectingAndThen(), summarizingInt()
Java8+ : partitioningBy()
Section 11:Parallel Streams - Java8+
Java8+ : Introduction to Parallel Streams
Java8+ : Sequential vs Parallel Performance (Part 1)
Java8+ : Sequential vs Parallel Performance (Part 2)
Section 12:Optional - Java8+
Java8+ : Introduction to Optional
Java8+ : empty(), ofNullable(), Of()
Java8+ : orElse(), orElseGet(), orElseThrow()
Java8+ : IfPresent(), isPresent()
Section 13:Default And Static Methods Of Interfaces - Java8+
Java8+ : Introduction of Default And Static Methods
Java8+ : Default Methods
Java8+ : Creating an Interface with Default/Static Methods
Java8+ : Multiple Inheritance
Java8+ : Conflicts in Multiple Inheritance
Section 14:New DateTime APIs : Java8+
Java8+ : new DateTime Introduction
Java8+ : LocalDate - get and create
Java8+ : LocalDate - modify
Java8+ : LocalTime - get and create
Java8+ : LocalTime - modify
Java8+ : LocalDateTime - get, create and modify
Java8+ : LocalDate and LocalTime from LocalDateTime
Java8+ : Duration
Java8+ : Instant
Java8+ : TimeZones - ZonedDateTime, ZoneId
Java8+ : LocalDateTime to ZonedDateTime
Java8+ : Convert java.util.date and java.sql.date to LocalDateTime/LocalDate
Section 15:Java Shell (REPL) - Java 9+
Java9+ : Java Environment Variable Setup
Java9+ : Introduction to JShell
Java9+ : Getting Started With JShell
Java9+ : Snippet, List and Drop
Java9+ : JShell Shortcuts
Java9+ : Creating Classes
Java9+ : IntelliJ IDEA JShell
Section 16:Module System - Java9+
Java9+ : Introduction to Module System
Java9+ : Example Modular Application
Java9+ : Creating a Modular Application
Java9+ : Modular Application and Maven
Section 17:Factory Methods For Collection - Java9+
Java9+ : Collections Factory Methods
Section 18:Try-with-resources - Java9+
Java9+ : Try-with-resources
Section 19:Type Interference with var - Java10+
Java10+ : var type with examples
Section 20:GC1 Improvements - Java10+
Java9+ : Garbage collection first algorithm improvements
Section 21:var with Lambda - Java11+
Java11+ : Adding var to Lambda
Section 22:Epsilon GC - Java11+
Java11+ : Epsilon GC
Section 23:New Http Client - Java 11+
Java11+ : Http Client API
Section 24:Switch Expression - Java 12+
Java12+ : Switch Expression Intro with Example
Java12+ : Switch Expression with action in cases
Section 25:Switch Expression Enhancements - Java 13+
Java12+ : Switch Expression with yield
Section 26:TextBlocks - Java13+
Java13+ : Multiline TextBlocks