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 if
atau 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 return
pernyataan.
(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 Consumer
antarmuka (ditemukan dalam java.util
paket) yang digunakan oleh daftar.
Contoh
Gunakan antarmuka Java Consumer
untuk 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);
}}