Java Lambda Expressions
Ekspresi Lambda/Lambda Expression ditambahkan pada Java 8. Ekspresi lambda merupakan blok kode pendek yang mengambil parameter dan mengembalikan nilai. Ekspresi lambda mirip seperti method, tapi tidak memerlukan nama dan dapat diimplementasikan tepat di dalam badan method.
Cara Penulisan
Ekspresi lambda paling sederhana berisi parameter tunggal dan sebuah ekpresi :
parameter -> ekspresi
Untuk menggunakan lebih dari satu parameter, bungkus dengan tanda kurung, contoh :
(parameter1, parameter2) -> ekspresi
Ekpresi lambda terbatas, harus segera mengembalikan sebuah nilai, dan tidak dapat berisi variabel, tugas, atau statement seperti if atau for. Untuk melakukan ekspresi yang lebih rumit, blok kode dapat menggunakan kurung kurawal. Jika ekspresi lambda perlu untuk mengembalikan sebuah nilai, maka blok kode harus memiliki statement return.
(parameter1, parameter2) -> {blok kode}
Menggunakan Ekspresi Lambda
Ekspresi lambda biasanya diteruskan sebagai parameter ke suatu fungsi. Contoh di bawah menggunakan ekspresi lambda dalam method ArrayList dan forEach() untuk mencetak setiap item di dalam list :
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> nomor = new ArrayList<Integer>();
nomor.add(5);
nomor.add(9);
nomor.add(8);
nomor.add(1);
nomor.forEach( (n) -> {System.out.println(n); } );
}
}
Output :
5
9
8
1
Ekpresi lambda dapat disimpan dalam variabel jika tipe variabel merupakan sebuah interface yang hanya memiliki satu method. Ekspresi lambda harus memiliki jumlah parameter yang sama dan tipe pengembalian yang sama dengan methodnya. Java memiliki banyak jenis interface bawaan, seperti interface Consumer (terdapat di package java.util) digunakan oleh list. Contoh di bawah ini menggunakan interface Consumer untuk menampung ekspresi lambda dalam sebuah variabel :
import java.util.ArrayList;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> nomor = new ArrayList<Integer>();
nomor.add(5);
nomor.add(9);
nomor.add(8);
nomor.add(1);
Consumer<Integer> method = (n) -> { System.out.println(n); };
nomor.forEach( method );
}
}
Output :
5
9
8
1
Untuk menggunakan ekspresi lambda dalam sebuah method, method harus memiliki sebuah parameter dengan interface method tunggal sebagai tipenya. Memanggil method interface akan menjalankan ekspresi lambda. Contoh di bawah akan membuat sebuah method menggunakan ekspresi lambda sebagai parameter :
interface StringFunction {
String run(String str);
}
public class Main {
public static void main(String[] args) {
StringFunction tandaSeru = (s) -> s + "!";
StringFunction tandaTanya = (s) -> s + "?";
sudahDiformat("Hei", tandaSeru);
sudahDiformat("Hei", tandaTanya);
}
public static void sudahDiformat(String str, StringFunction format) {
String result = format.run(str);
System.out.println(result);
}
}
Output :
Hei!
Hei?
Tutorial sebelumnya : Thread Pada Java
Tutorial setelahnya : Operasi File Pada Java
Semua Tutorial JAVA : Tutorial JAVA