
Explore the course GitHub repository for functional programming with Java, bookmark github.com/in28minutes/functional-programming-with-java, and install Java and Eclipse using the installation guide. Access code.md, exercises, and JShell snippets to practice.
Explore how functional programming shifts problem-solving in Java, and master streams, lambda expressions, and method references through hands-on, side-by-side examples with structured code.
Convert a list of numbers into a stream and process each element with a functional approach using for each and a method reference to print the results.
Compare structured and functional approaches by simplifying code, using System.out::println instead of a custom printer, and applying a filter with a method reference isEven to print only even numbers.
Practice functional programming in Java using streams, filters, and lambdas to print odd numbers, list courses, filter Spring, and select courses with at least four letters.
Use map in Java streams to transform numbers into their squares and print squares. Practice exercises include cubes of odd numbers and the number of characters in each course name.
Review functional programming basics by converting a list to a stream and applying filter, map, and forEach, using lambda expressions and method references to process numbers.
Learn java stream operations like reduce to sum a list using an initial zero and a method reference, and see how parallel streams enable efficient reductions.
Explore how reduce aggregates a list by repeatedly adding the next element to an initial zero, using a lambda or method reference like Integer::sum to produce the final total.
Explore stream operations distinct and sorted to filter duplicates and order values. Learn how to print distinct numbers and sorted lists with forEach and System.out.println, including chaining distinct().sorted().
Learn how to use comparators to sort streams in Java, using Comparator.naturalOrder, reverseOrder, and custom comparing with lambdas to sort by length or other criteria.
Explore intermediate and terminal stream operations in Java, including distinct, sorted, map. Observe how intermediate operations return streams, while terminal ones like forEach, collect, and reduce yield final results.
Turn failures into learning opportunities by analyzing what went wrong and seeking input from mentors or peers for hands-on programming perspectives, turning setbacks into steps toward success.
Explore how functional interfaces like predicate, function, and consumer power streams, with lambda expressions and method references, to filter evens, map to squares, and print results.
Explore how to implement a BinaryOperator for summing numbers using Integer::sum, and understand functional interfaces, lambda expressions, and anonymous classes in Java streams.
Master behavior parameterization in Java functional programming by passing predicates to a filter and print routine, using numbers.stream to select even, odd, or multiples of 3.
Explore supplier and unary operator functional interfaces, including no-input suppliers that return values, alongside predicate, function, consumer, and binary operator in java.util.function.
Explore BiPredicate, BiFunction, and BiConsumer with two inputs and various outputs, and learn how primitive interfaces like IntBinaryOperator optimize performance by avoiding boxing.
Practice crafting and debugging lambdas and functional interfaces in jshell, exploring consumer, biConsumer, and supplier, with type inference and brace-based multi-statement lambdas.
Create a custom Course class with fields, getters, setters, a constructor, and toString; build a course list and use streams for max, min, sorted, allMatch, noneMatch, anyMatch, and map grouping.
Learn to use allMatch, noneMatch, and anyMatch on streams by building predicates for review scores above 90 and 95, and evaluate course criteria.
Sort courses using streams and comparators, define criteria with Comparator and thenComparing by number of students and review score, and reverse for decreasing order.
Explore stream utilities such as skip, limit, takeWhile, and dropWhile to refine results on streams, including top-five selection and conditional taking based on review scores.
Explore how to use streams to find top or bottom courses by number of students and reviews, employing max, min, findFirst, and findAny, with Optional and orElse defaults.
Filter courses with reviews over 95 and map to student counts using mapToInt. Compute sum, average, count, and max; four courses match, totaling 88,000 students, with a max of 25,000.
Create streams directly with stream.of and Arrays.stream, compare boxed wrapper streams with primitive streams, and perform sum, min, max, and average operations.
Create dynamic streams of integers using IntStream, range, rangeClosed, and iterate; limit, peek, and sum values, then box primitives for collection into lists.
Join course names into a single string with a comma using streams and Collectors, then use flatMap to flatten string arrays, extract distinct characters, and build same-length course tuples.
Tackle challenges by troubleshooting on your own, researching with Google and ChatGPT, then post detailed questions in the course discussion board when needed, and finally share knowledge to help others.
Apply functional programming in java by using streams, lambda expressions, and method references to process lists, maps, and sets, while training the team and embracing the paradigm shift.
Review and reinforce key functional programming concepts in Java through a Q&A format, exploring functional interfaces, primitive variants, parallel streams, higher-order functions, behavior parameterization, and first-class citizens.
Compare imperative and functional styles to see how declarative code expresses what to do using streams, lambdas, and method references, while avoiding mutable step-by-step loops.
Explore multiple methods to create streams in Java, including from collections, arrays, maps, and files, plus builder, generate, iterate, and range techniques for functional programming.
Explore Java streams and distinguish intermediate and terminal operations. See how filter, map, and collect demonstrate lazy evaluation until a terminal operation runs.
Explore lambda functions as anonymous, boilerplate-reducing constructs with arrow syntax, learning examples of filter, map, sort by name length, and a unary operator that triples input.
Learn when to use method references instead of lambda functions, including static and instance method references and constructor references, to improve readability in streams.
Explore key Java functional interfaces such as predicate, function, consumer, binary operator, supplier, and unary operator, plus by predicate, by function, and by consumer, with stream examples.
Explore why primitive functional interfaces were introduced in Java to avoid boxing and unboxing overhead, using int binary operator and other primitive variants.
Use collectors to group Java stream elements by category with grouping by, producing maps, counts, and per-category results such as highest rated courses and course names.
Explore how parallel streams in Java leverage multi-core processors to boost performance with a declarative, state-free approach, using parallel streams and the parallel method.
Discover how Java functional programming, introduced in Java eight, simplifies code with lambdas and streams—from thread creation and comparator to listing files, filtering, and mapping to uppercase.
Explore higher order functions, behavior parameterization, and first class functions in Java functional programming, with examples of returning and passing predicates to filter streams.
Explore the benefits of functional programming, including first-class functions, immutability, and declarative style, and learn how streams enable parallel, concise, and side-effect free code.
Functional Programming is an essential skill for Java Programmers today.
Wanna start playing with Functional Programming in Java and Learn Streams and Lambdas?
Want to write awesome Java code with Functional Programming using Streams, Lambda Expressions, Functional Interfaces, and Method References?
WHAT STUDENTS ARE SAYING:
5 STARS - Great course to understand functional programming in Java. As usual, Ranga provides very clear explanations and examples to apply what you learn. 100% recommended
5 STARS - This course covers lot of methods, functional interfaces etc. It could have gone monotonous, but the instructor keeps the course engaging, and by using puzzles in jshell the course remains interesting till end.
5 STARS - Great course on function programming, started my journey on functional programming with this course.
5 STARS - Really good course. If you are looking out to get good knowledge on Functional Programming, then this course is waiting for you :)
5 STARS - Great teacher and Great Course...Ranga know how to start from beginner to Master...Good course!
5 STARS - Good examples how we used to write code and how to do it with functional programming. The course builds knowledge in such simple steps that it is effortless to learn
5 STARS - Ranga's small but powerful building code approach helped me to develop the thinking. When he says pause the video and try please do so that way I learned a lot. I was feeling like I was doing Pair programming with Ranga. Thank you Ranga. I have most of your courses this is the second one I completed. A big Thank you.
Want to make your Java Programs more performant and parallelizable using Functional Programming?
Are you ready to learn the most awesome new feature introduced into Java in Java 8 and Java 9?
Are you ready to learn about Functional Programming and take the next step in your programming career?
Do you want to join 500,000+ learners having Amazing Learning Experiences with in28Minutes?
Look No Further!
FUNCTIONAL PROGRAMMING COURSE OVERVIEW
Functional Programming was introduced into Java in Java 8. Additional Functional Programming Enhancements were introduced in Java 9.
In this hands-on course, we will learn to write an amazing Java code with Functional Programming. You will learn the basics of Java Functional Programming - Lambda Expressions, Method References, Streams, and Functional Interfaces.
This course would be a perfect first step as an introduction to Functional Programming with Java.
You will be using Eclipse (Java IDE) in this course. We will help you set up each one of these.
Start Learning Now. Hit the Enroll Button!
COURSE HIGHLIGHTS
Introduction to the Course
Step 01: Functional Programming with Java - Course Overview
Step 02: Functional Programming with Java - Exploring Github Repo and Installations
Introduction to Functional Programming with Java
Step 01: Getting Started with Functional Programming with Java
Step 02: Writing Your First Java Functional Program
Step 03: Improving Java Functional Program with filter
Step 04: Using Lambda Expression to enhance your Functional Program
Step 05: Do Functional Programming Exercises with Streams, Filters and Lambdas
Step 06: Using map in Functional Programs - with Exercises
Step 07: Quick Review of Functional Programming Basics
Playing with Streams
Step 01: Learning Stream Operations - Calculate Sum using reduce
Step 02: Playing with reduce
Step 03: Exploring Streams with Puzzles in JShell
Step 04: Do Functional Programming Exercises with Streams and reduce
Step 05: Learn Stream Operations - distinct and sorted
Step 06: Using Comparators to Sort Streams with sorted
Step 07: Collecting Stream Elements to List using collect
Step 08: Reviewing Streams - Intermediate and Stream Operations
Exploring Java Functional Interfaces and Lambdas
Step 01: Getting Started with Functional Interfaces - Predicate, Consumer and Function
Step 02: Do Exercises with Functional Interfaces - BinaryOperator
Step 03: Doing Behavior Parameterization with Functional Programming
Step 04: Do Exercise with Behavior Parameterization
Step 05: Exploring Supplier and UnaryOperator Functional Interfaces
Step 06: Exploring BiPredicate, BiFunction, BiConsumer, and Primitive Functional Interfaces
Step 07: Playing Puzzles with Functional Interfaces and Lambdas
Step 08: Exploring Method References with Java
Java Functional Programming with Custom Classes
Step 01: Creating Custom Class Course with some Test Data
Step 02: Playing with allMatch, noneMatch and anyMatch
Step 03: Sorting courses with sorted and creating Comparators
Step 04: Playing with skip, limit, takeWhile and dropWhile
Step 05: Finding top, max and min courses with max, min, findFirst and findAny
Step 06: Playing with sum, average and count
Step 07: Grouping courses into Map using groupingBy
Playing with Java Functional Programming
Step 01: Creating Streams using Stream of method and for Arrays
Step 02: Creating Streams for First 100 Numbers, Squares of Numbers and More
Step 03: Doing Big Number calculations with BigInteger
Playing further with Java Functional Programming
Step 01: Joining Strings with joining and Playing with flapMap
Step 02: Creating Higher-Order Functions
Step 03: FP and Performance - Intermediate Stream Operations are Lazy
Step 04: Improving Performance with Parallelization of Streams
Functional Programming makes Java Easy
Step 01: Modifying lists with replaceAll and removeIf
Step 02: Playing with Files using Functional Programming
Step 03: Playing with Threads using Functional Programming
Step 04: Using Functional Programming in Java Applications
Start Learning Now. Hit the Enroll Button!