Ekspresi Java Lambda


Ekspresi Java Lambda

Ekspresi Lambda ditambahkan di Java 8.

Ekspresi lambda adalah blok kode pendek yang mengambil parameter dan mengembalikan nilai. Ekspresi Lambda mirip dengan metode, tetapi tidak memerlukan nama dan dapat diimplementasikan langsung di badan metode.


Sintaksis

Ekspresi lambda paling sederhana berisi parameter tunggal dan ekspresi:

parameter -> expression

Untuk menggunakan lebih dari satu parameter, bungkus dalam tanda kurung:

(parameter1, parameter2) -> expression

Ekspresi terbatas. Mereka harus segera mengembalikan nilai, dan mereka tidak boleh berisi variabel, tugas, atau pernyataan seperti ifatau for. Untuk melakukan operasi yang lebih kompleks, blok kode dapat digunakan dengan kurung kurawal. Jika ekspresi lambda perlu mengembalikan nilai, maka blok kode harus memiliki returnpernyataan.

(parameter1, parameter2) -> { code block }

Menggunakan Ekspresi Lambda

Ekspresi Lambda biasanya diteruskan sebagai parameter ke suatu fungsi:

Contoh

Gunakan ekspresi lamba dalam metode ArrayList's forEach()untuk mencetak setiap item dalam daftar:

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    numbers.forEach( (n) -> { System.out.println(n); } );
  }
}

Ekspresi Lambda dapat disimpan dalam variabel jika tipe variabel adalah antarmuka yang hanya memiliki satu metode. Ekspresi lambda harus memiliki jumlah parameter yang sama dan tipe pengembalian yang sama dengan metode tersebut. Java memiliki banyak jenis antarmuka bawaan ini, seperti Consumerantarmuka (ditemukan dalam java.utilpaket) yang digunakan oleh daftar.

Contoh

Gunakan antarmuka Java Consumeruntuk menyimpan ekspresi lambda dalam variabel:

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}

Untuk menggunakan ekspresi lambda dalam suatu metode, metode tersebut harus memiliki parameter dengan antarmuka metode tunggal sebagai tipenya. Memanggil metode antarmuka akan menjalankan ekspresi lambda:

Contoh

Buat metode yang menggunakan ekspresi lambda sebagai parameter:

interface StringFunction {
  String run(String str);
}

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