Memahami Percanggahan Antara Kaedah Java 8 map() dan flatMap()
Dalam Java 8, kedua-dua map() dan flatMap() kaedah boleh digunakan pada Strim
Kaedah map()
Operasi map() menjana satu nilai output untuk setiap nilai input. Pada asasnya, ia menggunakan Fungsi untuk setiap elemen dalam aliran input. Fungsi mengambil nilai input dan menghasilkan nilai hasil tunggal.
Kaedah flatMap()
Sebaliknya, operasi flatMap() boleh menghasilkan sebarang bilangan nilai ( termasuk sifar) untuk setiap nilai input. Ini didayakan oleh hujahnya: fungsi yang mengambil nilai dan mengembalikan bilangan nilai arbitrari.
Sebab perbezaan ini ialah kaedah Java hanya boleh mengembalikan sifar atau satu nilai. flatMap() mengetepikan had ini dengan membenarkan fungsi pemeta untuk mengembalikan aliran sebagai outputnya. Nilai daripada aliran ini kemudiannya disalirkan dan dihantar ke aliran keluaran. Akibatnya, output dianggap "diratakan" kerana kumpulan nilai fungsi pemeta tidak boleh dibezakan dalam aliran output.
Penggunaan
Biasanya, flatMap() digunakan apabila fungsi pemeta berhasrat untuk mengembalikan nilai sifar (menggunakan Stream.empty()) atau berbilang nilai (menggunakan Stream.of(a, b, c)). Namun begitu, sebarang jenis aliran boleh dikembalikan.
Atas ialah kandungan terperinci Apakah Perbezaan Antara `map()` dan `flatMap()` dalam Java 8 Streams?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!