Rumah Keuangan Pribadi Menggunakan Streams and Lambda Expressions di Java - dummies

Menggunakan Streams and Lambda Expressions di Java - dummies

Video: Belajar Java Lambda Expression - 5 Menggunakan Lambda Expression 2024

Video: Belajar Java Lambda Expression - 5 Menggunakan Lambda Expression 2024
Anonim

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.

Sebuah rangkaian pemrograman fungsional.

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 .

Beberapa Metode Pemrograman Fungsional
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
Dalam transisi dari kotak ketiga ke kotak keempat, metode pekerja (metode

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.

Sebagai perbandingan, bayangkan metode

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 <> (); Mata uang NumberFormat = NumberFormat. getCurrencyInstance ();

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 ("DVD", 15. 00));

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.

Objek setiap

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.

Untuk itu

Stream harga yang Anda terapkan metode reduce , yang menghasilkan nilai satu double - jumlah harga DVD. Mendapatkan harga total semua penjualan DVD.

Menggunakan Streams and Lambda Expressions di Java - dummies

Pilihan Editor

Memahami G-Spot - dummies

Memahami G-Spot - dummies

G-spot dilaporkan merupakan tempat di vagina yang tampaknya bisa memberi wanita orgasme tanpa stimulasi klitoris. Bagaimana menemukan G-spot (dan apa yang akan dilakukannya untuk kehidupan seks mereka) telah menjadi tujuan bagi banyak wanita dan pasangan seks mereka. G-spot ini dinamai ginekolog Ernest Grafenberg yang mengaku telah menemukan ...

Gunakan Foreplay untuk Mengatur Mood sepanjang hari - garpu

Gunakan Foreplay untuk Mengatur Mood sepanjang hari - garpu

Foreplay mungkin salah satu yang paling disalahpahami kata-kata dalam kosakata seksual. Bahkan, ketika beberapa pria mendengar kata foreplay, mereka masih menganggap golf bukan seks. Tapi perlahan dan pasti, populasi laki-laki belajar bahwa foreplay sama pentingnya dengan seks yang baik seperti menggunakan besi 9 adalah golf yang bagus. ...

Ragam Varietas untuk Memperbaiki Kehidupan Seks Anda - variasi dummies

Ragam Varietas untuk Memperbaiki Kehidupan Seks Anda - variasi dummies

Membuat hidup lebih menarik. Jika Anda selalu pergi ke restoran yang sama, pengulangan itu bisa jadi membosankan, dan kebosanan tidak membantu pembakaran api romantis itu tetap menyala. Dengan mencoba tempat baru, Anda bisa mencicipi makanan baru dan suasana baru. Pengalaman akan memberi Anda hal-hal baru untuk dibicarakan, bahkan jika ...

Pilihan Editor

Cara menulis cek di QuickBooks 2010 - dummies

Cara menulis cek di QuickBooks 2010 - dummies

QuickBooks 2010 mencakup perintah dan jendela khusus untuk tujuan merekam dan mungkin mencetak cek. Anda dapat menulis cek di dalam QuickBooks, merekam informasi penarikan di akun yang sesuai.

Job Reporting Biaya di QuickBooks 2012 - dummies

Job Reporting Biaya di QuickBooks 2012 - dummies

Jika Anda memilih Reports- Jobs, Time & Mileage command, QuickBooks 2012 menampilkan submenu hampir dua lusin laporan berbeda yang memasok informasi biaya kerja. Judul laporannya cukup jelas. Beberapa laporan memberikan profitabilitas kerja, seperti laporan Ringkasan Profitabilitas Ayub. Beberapa laporan mengidentifikasi perkiraan yang terkait dengan pekerjaan tertentu. Laporan lain ...

Job Cost Reporting in QuickBooks 2015 - dummies

Job Cost Reporting in QuickBooks 2015 - dummies

Akuntansi mungkin bekerja sedikit berbeda ketika perusahaan mengatur pekerjaannya ke dalam proyek atau pekerjaan. Dalam beberapa situasi, perusahaan perlu melacak pendapatan dan pengeluaran - tidak hanya melalui bagan akun standar, tetapi juga oleh pekerjaan atau proyek. Untungnya, QuickBooks membuat penetapan biaya kerja, atau biaya proyek, sangat mudah. Jika Anda ...

Pilihan Editor

Kantor 2011 untuk Mac: Berbagi Presentasi PowerPoint Anda - dummies

Kantor 2011 untuk Mac: Berbagi Presentasi PowerPoint Anda - dummies

Anda dapat membagikan presentasi yang Anda bangun PowerPoint 2011 untuk Mac dengan berbagai cara. Masing-masing yang terbaik untuk keadaan dan skenario tertentu. Kenali anggota audiens Anda dan kombinasikan pengetahuan itu dengan kebutuhan Anda untuk memilih metode distribusi yang sesuai. Mendistribusikan dalam format PowerPoint Microsoft Office adalah salah satu aplikasi terinstal paling luas ...

Buka PowerPoint Presentation Gallery di Office 2011 untuk Mac - dummies

Buka PowerPoint Presentation Gallery di Office 2011 untuk Mac - dummies

Perilaku default untuk membuka PowerPoint 2011 untuk Mac adalah menampilkan opsi All Themes dari PowerPoint Presentation Gallery. Anda juga bisa menampilkan Galeri Presentasi ini dengan memilih File → New dari Template atau dengan menekan Shift-Command-P. Dua tema pertama dalam kategori Semua Template adalah Putih dan Hitam, tema yang Anda gunakan untuk ...

Merencanakan presentasi PowerPoint Anda di Office 2008 untuk perencanaan Mac - dummies

Merencanakan presentasi PowerPoint Anda di Office 2008 untuk perencanaan Mac - dummies

Dapat berjalan jauh menuju pembuatan Office 2008 Anda untuk slide Mac PowerPoint lebih baik lagi. Meski membuat presentasi PowerPoint tidaklah sulit, menciptakan yang bagus, yang mudah diingat butuh pemikiran dan perencanaan. Pertimbangkan saran berikut sebelum mulai mengerjakan presentasi slide show PowerPoint Anda. Gunakan aturan 10/20/30 Berikut adalah beberapa saran PowerPoint yang bagus dari ...