Java Functional Programming with Lambdas & Streams  Course

Functional programming is a way of developing software, using side-effect-free functions as basic building blocks. Functional code has some advantages: it can be more concise, more predictable, and easier to test than imperative or object-oriented code. Lambdas, which are anonymous functions, are an integral part of functional programming and were introduced in Java 8. This workshop will help Java programmers understand the new terminology and core concepts of functional programming, in particular lambdas and streams. It will teach you how to write even better Java code.

Duration: 2 days. Courses are presented from 08:30 to 16:30.
Investment: R3,900.00 excluding VAT per delegate.
Venue: The Incus Data Training Venue in Centurion, Pretoria. Courses can also be presented on-site for 5 or more delegates.
Dates: Please check the course schedule for the next available date.
You can also contact us at tel: (+27) 12-666-2020 or cell/WhatsApp: (+27) 76-694-7705, or email us at to find out about dates that suit you.

Download the Java Functional Programming with Lambdas & Streams course contents in PDF format

Please fill in this form if you would like us to contact you about your training requirements, or if you would like to be kept informed of dates for the Java Functional Programming with Lambdas & Streams course.

Fields marked with * are required.

Please enter your name

Please enter your surname

Please enter a valid phone number eg. 0126662020

Please enter a valid email address

If you would like us to email you a formal quote, please complete the following:

Type in 'Private' if you are paying for yourself.

Incus Data does not sell or otherwise distribute email addresses. We will not divulge your personal information to anyone unless specifically authorised by you.

Audience: Is This The Right Course For Me?

You should attend the Java Functional Programming course if:

  • You are a Java programmer and you want to learn about the functional programming in Java.
  • You are a Java programmer and you need to write or maintain Java code that uses lambdas.
  • You are a Java programmer and you need to write or maintain Java code that uses the Stream API.

Prerequisites: Am I Ready For The Course?

Before you attend the Java Functional Programming course:

  • You must have attended our Java Programming course or already be comfortable with the fundamentals of the Java programming language.
  • You should have at least 6 months practical experience programming in Java.

Please ensure you meet the prerequisites for this course before you attend. Read the importance of course prerequisites to understand why this is necessary.

If you are not sure which is the right course for you, please call us. We will be happy to advise you, based on your training goals and your experience.

Objectives: What Will I Learn?

After you have completed the Java Functional Programming workshop, you will be able to:

  • Understand the terminology and core concepts of functional programming.
  • Understand how lambdas are implemented and used in Java from version 8.
  • Read, write and maintain Java code that uses lambdas.
  • Read, write and maintain Java code that uses the Stream APIs.

Technical Contents: What Does The Course Cover?

Functional Programming Concepts
  • Origins of functional programming and the lambda calculas.
  • Functional programming vs object-oriented programming.
  • Functions as first class citizens.
  • Advantages and disadvantages of functional programming.
  • Pure functions, higher-level functions, anonymous functions.
  • Shared state, side effects and immutability.
Lambda Expressions
  • Definition of a lambda expression.
  • Use cases for lambdas.
  • Lambda syntax.
  • Target typing and inference.
  • Closures and effectively final local variables.
  • Higher order functions in Java.
Functional Interfaces
  • Single Abstract Method (SAM) interfaces and the @FunctionalInterface annotation.
  • The java.util.function package.
  • Choosing a functional interface.
  • Functional interfaces as targets for lambda expressions.
  • Default and static methods in interfaces.
  • Method and constructor references.
  • The Optional class as a better alternative to null.
Streams and Collections
  • Introduction to streams.
  • External vs internal iteration.
  • Concurrency vs parallelism.
  • Using lambdas in collections.
  • Using comparators and filters.
  • Common stream operations: collect, flatMap, map, filter, reduce.
  • Transformations and reductions.
  • Grouping and partitioning.
Other Topics
  • Factors influencing parallel performance.
  • Designing with lambdas.
  • Implementing GoF design patterns using lambdas.
  • Best practices in Java.

Testimonials: What Other Delegates Say About This Course

"I am very much happy with course, recollected all my basics as well as advanced skill about Java and Java8. I am impressed with lecturer and venue."

B. Arugula, ABSA   (Lecturer: Lewis)

How Do I Book?

It's easy to book: Fill in our course enrolment form (editable PDF file) and email it to us at

After we have received your booking, we will send you a confirmation that you are booked on the course, an invoice and directions to the venue.

Tip: Most PDF readers, other than Adobe Reader, will let you save the form with the data you have entered. If you are using Adobe Reader, however, you might not be able to do this. But don't despair: when you have typed in the information, just print the file to PDF - and you'll have a completed enrolment form ready to email to us.