Lesson 45 +10 XP

Java Lambda Expressions

Java Lambda Expressions

A lambda expression is a short block of code that takes parameters and returns a value. It is a compact way to write methods, often used with functional interfaces.

Simple lambda

import java.util.ArrayList;

ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);

numbers.forEach((n) -> { System.out.println(n); });

Lambda syntax

A lambda has parameters, an arrow ->, and a body:

parameter -> expression
(parameter1, parameter2) -> expression
// Use a lambda in the createArrayList method
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(1);
nums.add(2);
nums.forEach((n) -> { System.out.println(n); });

Using lambdas with interfaces

Lambdas implement functional interfaces (interfaces with one abstract method):

interface StringFunction {
  String run(String str);
}

public class Main {
  public static void main(String[] args) {
    StringFunction exclaim = (s) -> s + "!";
    StringFunction ask = (s) -> s + "?";
    System.out.println(exclaim.run("Hello"));
    System.out.println(ask.run("Hello"));
  }
}

Why use lambdas

  • Write less code than anonymous classes.
  • Pass behavior as data.
  • Make code easier to read.

TL;DR

  • Lambdas are short anonymous methods.
  • Syntax: (params) -> expression.
  • They implement functional interfaces.