Hands-On Functional Programming with Java

Video description

Functional programming, a popular programming paradigm used to simplify many tasks, will help you write flexible and succinct code. This paradigm makes programs easier to reason with because they're deterministic (one specific input will always give you the same output).

This course takes a thought-leadership approach, gently introduces you to Functional Programming, and takes you all the way to becoming a master of the paradigm. You'll then learn how to work with higher-order functions, lambda functions, collections and more. You'll learn how to apply the best data structures and algorithms that optimize functions and also how to reuse and refactor functional blocks of code. This course is updated to Java 12 so that you will be ahead of the crowd.

By the end of the course, you will have mastered the concepts regarding functional programming along with OOP, to build robust and highly testable applications.

What You Will Learn

  • Utilize the functional programming paradigm on practical problems in Java.
  • You will be able to create robust software with few errors.
  • Discover the Java Stream interface for developing functional source code.
  • Implement lambda expressions all through your code, making it more readable and maintainable.
  • You will implement the Collections framework and all of its interfaces.


If you are a Java developer and want to improve your applications using the functional programming approach, then this course is for you. A solid understanding of Java concepts is required.

Publisher resources

Download Example Code

Table of contents

  1. Chapter 1 : Understanding Functional Programming
    1. The Course Overview
    2. What Is Functional Programming?
    3. Implementing Anonymous Classes (Example A)
    4. Lambda Expression (Lambda Version of Example A)
    5. Differentiating Interfaces versus Functional Interfaces
  2. Chapter 2 : Working with Lambda Expressions
    1. Implementing the Syntax of Lambda Expressions
    2. Replacing Anonymous Classes
    3. Using Method References
    4. Best Practices for Using Lambda Expressions
  3. Chapter 3 : Develop Functional Code Using the Collections Framework
    1. Introduction to the Collections Framework
    2. Implementing the Set Interface Using HashSet and LinkedHashSet
    3. Implementation of the SortedSet Interface
    4. Deploying the List Interface
    5. Working with the Queue Interface
    6. Introduction and Implementations of Maps
  4. Chapter 4 : Implementing the Stream API
    1. Understanding the Stream API and Constructing Streams
    2. Intermediate Stream Operations
    3. Terminal Stream Operations and the Optional Class
    4. Implementing Stream Operations in Examples
    5. Operations on Collections and Creating Collections Using Collectors
    6. Hands-on Collection Sorting Using Streams
  5. Chapter 5 : Advanced Stream Operations
    1. Advanced Filtering and Mapping Using Streams
    2. Using Reduce for Advanced Transformations
    3. Implementing flatMap in Examples
    4. Advanced Grouping of Objects Using Streams
    5. Advanced Joining and Partitioning of Objects Using Streams
  6. Chapter 6 : Implementing Concurrent Streams in Your Code
    1. Benefits of Concurrent Streams and Concurrency in General
    2. Implementing Parallel Streams
    3. Parallel Stream Operations
    4. Comparing Sequential to Parallel Streams

Product information

  • Title: Hands-On Functional Programming with Java
  • Author(s): Hristijan Stojkoski
  • Release date: February 2019
  • Publisher(s): Packt Publishing
  • ISBN: 9781789804362