Iklan
Jika Anda seorang programmer Java dan Anda tertarik untuk mempelajari lebih lanjut tentang lambda Java 8, dalam artikel ini kami akan melihat lebih dekat pada sintaks dan penggunaan lambda.
SEBUAH ekspresi lambda di Jawa adalah cara ringkas untuk mengekspresikan metode kelas dalam ekspresi. Ini memiliki daftar parameter dan tubuh. Tubuh bisa jadi tunggal ekspresi atau blok 10 Konsep Inti Java yang Harus Anda Pelajari Saat MemulaiBaik Anda menulis GUI, mengembangkan perangkat lunak sisi server, atau aplikasi seluler menggunakan Android, mempelajari Java akan membantu Anda dengan baik. Berikut adalah beberapa konsep inti Java untuk membantu Anda memulai. Baca lebih banyak . Ini biasanya digunakan di mana implementasi antarmuka diperlukan. Kebutuhan ini biasanya muncul ketika antarmuka diperlukan sebagai argumen untuk memanggil metode.
Beberapa Ekspresi Lambda Sederhana
Mari kita lihat beberapa contoh sederhana ekspresi lambda.
Berikut ini adalah ekspresi lambda yang menerima dua angka x dan y dan menghitung jumlahnya.
(int x, int y) -> x + y;
Jatuhkan tipe parameter untuk representasi yang lebih ringkas:
(x, y) -> x + y;
Tetapkan fungsi yang tidak menerima parameter:
() -> 404;
Berikut ini juga valid, yang tidak menerima parameter dan tidak mengembalikan apa pun:
() -> {}
Tidak perlu paranthes untuk menyertakan parameter untuk satu parameter:
x -> x +1.
Blok kode yang lebih kompleks juga dimungkinkan. Lambda berikut menerima satu baris parameter dan melakukan beberapa pemrosesan di atasnya. Perhatikan bahwa jenis parameter disimpulkan dari konteks sekitarnya:
baris -> { String [] x = pattern.split (line); mengembalikan Player baru (Integer.parseInt (x [0]), x [1], x [2], x [3], Integer.parseInt (x [4])); }
Pengodean Bersih dan Ringkas
Menggunakan ekspresi lambda membantu membuat kode Anda bersih dan ringkas. Untuk membantu dalam hal ini, kelas Java 8 memanfaatkan lambda secara ekstensif.
Looping Selama Daftar atau Set
Kelas koleksi seperti Daftar, Set, Antre, dan mengimplementasikan Iterable antarmuka yang membuat perulangan elemen lebih mudah.
Nyatakan daftar nama.
Daftar names = Arrays.asList ("Joe", "Jack", "James", "Albert");
Simpulkan daftar tanpa lambda:
untuk (Nama string: nama) {System.out.println (nama); }
Menggunakan lambda, loop di atas dapat ditulis sebagai:
names.forEach (name -> System.out.println (name));
Dengan referensi metode Java 8, hal di atas dapat ditulis lebih ringkas seperti:
names.forEach (System.out:: println);
Looping Over a Map
SEBUAH Peta adalah pemetaan kunci nilai-nilai. Mengitari peta melibatkan pengulangan setiap pemetaan (kunci, nilai). Bandingkan bagaimana Anda dapat menggunakan lambdas untuk situasi ini.
Pertama-tama tentukan peta:
Peta map = HashMap baru <> (); map.put ("Atlanta, Georgia", 110); map.put ("Austin, Texas", 115); map.put ("Baltimore, Maryland", 105); map.put ("Birmingham, Alabama", 99); map.put ("Boston, Massachusetts", 98);
Anda dapat mengulangi peta ini dengan cara tradisional:
untuk (Peta. Masuk e: map.entrySet ()) {System.out.println (e.getKey () + "=>" + e.getValue ()); }
Inilah cara Anda dapat melakukan hal yang sama dengan cepat dan ringkas menggunakan lambdas:
map.forEach ((k, v) -> System.out.println (k + "=>" + v));
Antarmuka Fungsional
Apa jenis pengembalian ekspresi lambda? Dengan kata lain, apa jenisnya X dalam pernyataan berikut?
X x = a -> a +1;
Tipe kembalinya ekspresi lambda adalah a antarmuka fungsional - antarmuka dengan metode abstrak tunggal. Anda dapat menetapkan ekspresi lambda ke antarmuka dengan metode abstrak yang kompatibel. Beberapa contoh di bawah ini.
Membuat Tugas Multi-Threaded
Pertimbangkan untuk membuat tugas eksekusi di utas terpisah 4 Metode untuk Menulis Kode Multi-Threaded di JawaPada artikel ini, kami membandingkan beberapa opsi untuk menulis kode multi-threaded di Jawa, sehingga Anda bisa menilai opsi mana yang akan digunakan untuk proyek Java Anda selanjutnya. Baca lebih banyak - Anda diminta untuk mendefinisikan tugas sebagai a Runnable antarmuka dan mengimplementasikan Lari() metode. Sini Runnable adalah antarmuka fungsional.
kelas MyTask mengimplementasikan Runnable {... public void run () {// terapkan tugas Anda di sini System.out.println ("Berjalan di utas terpisah sekarang."); }... }
Anda kemudian dapat membuat instance dari Tugasku kelas dan menggunakannya untuk memulai utas eksekusi baru.
Tugas MyTask = MyTask baru (); Utas = Utas baru (tugas); thread.start ();
Menggunakan lambda, proses pembuatan a Runnable menjadi lebih mudah. Definisi tugas di atas dapat ditulis ulang sebagai:
Tugas yang dapat dijalankan = () -> System.out.println ("Berjalan di utas terpisah sekarang.");
Atau bahkan:
Utas = Utas baru (() -> System.out.println ("Berjalan di utas terpisah sekarang.")); thread.start ();
Perbandingan Menggunakan Pembanding
Itu Pembanding adalah antarmuka fungsional untuk membandingkan objek dari tipe yang diberikan. Ini mendefinisikan metode abstrak tunggal yang disebut membandingkan() yang dapat didefinisikan menggunakan ekspresi lambda.
Berikut ini adalah ekspresi lambda yang menciptakan a Pembanding digunakan untuk membandingkan string case-insensitive.
Pembanding cmp = (x, y) -> x.compareToIgnoreCase (y);
Sekali contoh dari Pembanding antarmuka fungsional telah dibuat, dapat digunakan kembali sesuai kebutuhan.
Di sini, kami mengurutkan daftar string dalam urutan menaik.
Daftar names = Arrays.asList ("Joe", "Jack", "James", "Albert"); Koleksi.sort (nama, cmp); names.forEach (System.out:: println); // cetak. Albert. Mendongkrak. James Joe.
Daftar di atas diurutkan di tempat. Kita sekarang dapat mencarinya menggunakan binarySearch () metode sebagai berikut:
System.out.println ("search (Joe):" + Collections.binarySearch (nama, "Joe", cmp)); # cetakan. cari (Joe): 3.
Komputasi maksimum dan minimum dari daftar juga mudah menggunakan lambdas.
Tentukan beberapa data:
Daftar temps = Arrays.asList (110, 115, 105, 99, 98, 54, 109, 84, 81, 72, 135, 115, 75, 82, 90, 88);
Gunakan ekspresi lambda untuk mendefinisikan komparator:
Pembanding cmpTemp = (x, y) -> Integer.compare (x, y);
Dan cetak maksimum dan minimum:
System.out.println ("Max / Min"); System.out.println (Collections.max (temps, cmpTemp) + "/" + Collections.min (temps, cmpTemp));
Gunakan dalam Pemrograman GUI
Ekspresi Lambda juga sangat berguna dalam pemrograman GUI untuk mengimplementasikan event handler. Berikut adalah contoh menggunakan penangan klik tombol.
Tombol JButton = JButton baru ("Klik Saya"); button.addActionListener (e -> System.out.println ("Tombol diklik!"));
Dan itu cepat melihat menggunakan lambdas di Jawa 8.
Sudahkah lambda membuat hidup Anda lebih mudah sejak Java 8? Tolong jelaskan di komentar di bawah ini.