Video: Belajar Java Lambda Expression - 5 Menggunakan Lambda Expression 2024
Java memiliki metode mewah yang memanfaatkan aliran sungai dan ekspresi lambda secara optimal. Dengan aliran dan ekspresi lambda, Anda dapat membuat jalur perakitan. Solusi perakitan menggunakan konsep dari pemrograman fungsional.
Jalur perakitan terdiri dari beberapa metode. Setiap metode mengambil data, mengubah data dengan cara tertentu atau lainnya, dan menyerahkan hasilnya ke metode berikutnya. Ini jalur perakitan.
Setiap kotak mewakili sekelompok bahan baku saat ditransformasikan di sepanjang jalur perakitan. Setiap panah mewakili sebuah metode (atau, secara metaforis, seorang pekerja di jalur perakitan).
Misalnya, dalam transisi dari kotak kedua ke kotak ketiga, metode pekerja (metode
filter
) menyaring penjualan item yang bukan DVD. Bayangkan Lucy Ricardo berdiri di antara kotak kedua dan ketiga, menghapus setiap buku atau CD dari jalur perakitan dan melemparkannya dengan ceroboh ke lantai.
Parameter untuk metode
filter
adalah
Predikat
- sebuah ekspresi lambda yang hasilnya
boolean
. Metode
filter
menyaring item yang tidak lulus tes
true / false dari tes lambda
.
Nama Metode | Anggota Dari | Parameter | Jenis Hasil | Nilai Hasil |
stream
|
Koleksi
(misalnya, sebuah
ArrayList
, object) |
(none) |
Stream
|
Aliran yang meludahkan elemen koleksi |
filter
|
Streaming
|
Predikat
|
Aliran > Aliran baru yang berisi nilai yang menghasilkan ekspresi lambda
|
true
map
|
Stream
|
Function
|
Stream
|
Aliran baru yang berisi hasil penerapan ekspresi lambda ke arus masuk
|
reduce |
Stream
|
BinaryOperator
|
Jenis yang digunakan oleh
|
BinaryOperator
Hasil menggabungkan semua nilai di arus masuk
|
|
map
) menarik harga
dari masing-masing
penjualan
. Dari tempat pekerja itu seterusnya, jalur perakitan hanya berisi nilai
harga
.
Agar lebih tepat, metode Java
map
mengambil
Function
seperti
(penjualan) -> penjualan. getPrice ()
dan gunakan
Function
untuk setiap nilai dalam sebuah aliran. Jadi metode
map
mengambil arus masuk
penjualan
dan membuat arus keluar nilai
harga
.
Dalam peralihan dari kotak keempat ke kotak kelima, metode pekerja (metode
reduce
) menambahkan harga penjualan DVD.Metode
mengurangi
Java mengambil dua parameter:
Parameter pertama adalah nilai awal.
Pada gambar di atas, nilai awalnya adalah
0. 0
.
Parameter kedua adalah
BinaryOperator
.
Pada gambar di atas, mengurangi
metode
BinaryOperator
adalah
(price1, price2) -> price1 + price2
Metode
reduce
menggunakan
BinaryOperator
untuk menggabungkan nilai dari aliran masuk. Nilai awal berfungsi sebagai titik awal untuk menggabungkan semua. Jadi, metode
reduce
melakukan dua penambahan.
Metode pengurangan menambahkan dua nilai dari arus masuk.
mengurangi (10. 0, (value1, value2) -> value1 * value2)
dengan arus yang nilainya termasuk
3. 0
,
2. 0
, dan
5. 0
. Tindakan yang dihasilkan ditunjukkan di bawah
Metode perampingan mengalikan nilai dari arus masuk.
Anda mungkin pernah mendengar tentang model pemrograman Google MapReduce. Kesamaan antara nama model pemrograman dan nama metode Java map
dan
reduce
bukanlah sebuah kebetulan.
Diambil secara keseluruhan, seluruh perakitan mencantumkan harga DVD yang terjual. Kode di atas berisi program lengkap menggunakan stream dan ekspresi lambda gambar pertama di atas.
impor java teks. NumberFormat;
impor java util. ArrayList;
public class TallySales {
public static void main (String [] args) {
ArrayList
sales = new ArrayList <> ();
isiTheList (penjualan);
total ganda = penjualan. stream ()
. filter ((penjualan) -> penjualan. getItem () sama dengan ("DVD"))
. peta ((penjualan) -> penjualan getPrice ())
. kurangi (0, 0, (price1, price2) -> price1 + price2);
Sistem di luar. println (format mata uang (total));
}
pengisian void statik statisTotal (ArrayList
) {
penjualan. tambahkan (Penjualan baru ("Buku", 12. 00));
penjualan. tambahkan (Penjualan baru ("DVD", 21. 00));
penjualan. tambahkan (New Sale ("CD", 5. 25));
}
}
Kode ini membutuhkan Java 8 atau yang lebih baru. Jika IDE Anda disetel untuk versi Java sebelumnya, Anda mungkin harus bermain-main dengan pengaturan IDE. Anda bahkan mungkin harus mendownload versi Java yang lebih baru.
Bentuk huruf tebal adalah satu pernyataan tugas besar di Jawa. Sisi kanan dari pernyataan berisi urutan pemanggilan metode. Setiap pemanggilan metode mengembalikan sebuah objek, dan setiap objek tersebut adalah objek sebelum titik di pemanggilan metode berikutnya. Begitulah cara Anda membentuk jalur perakitan.
Misalnya, di dekat kode tebal, nama
penjualan
mengacu pada objek
ArrayList
. Setiap objek
ArrayList
memiliki metode
stream
. Pada kode diatas,
penjualan. stream ()
adalah panggilan untuk metode
ArrayList
objek
stream
.
Metode aliran mengembalikan sebuah instance kelas Java
Stream
. (Sungguh kejutan!) Jadi
penjualan. stream ()
mengacu pada objek
Stream
.
Mendapatkan semua penjualan DVD.
Stream
memiliki metode
filter
. Jadi
penjualan. aliran(). Filter> ((penjualan) -> penjualan getItem () sama dengan ("DVD"))
adalah panggilan ke metode
Stream
objek
filter
.
Pola berlanjut. Metode
Stream
object's
map
mengembalikan objek
Stream
objek - a
Stream
yang berisi harga.
Mendapatkan harga dari setiap penjualan DVD.
Stream
harga yang Anda terapkan metode
reduce
, yang menghasilkan nilai satu
double
- jumlah harga DVD.
Mendapatkan harga total semua penjualan DVD.