Pemprosesan Strim dengan Kaedah map() dan flatMap()
Dalam Java 8, antara muka Strim menyediakan dua kaedah untuk memproses aliran data : map() dan flatMap(). Kedua-dua kaedah mengambil fungsi sebagai hujah dan menghasilkan aliran baharu, tetapi ia berbeza dalam cara mereka mengendalikan hasil penggunaan fungsi pada setiap elemen.
Kaedah map()
Kaedah map() menggunakan fungsi yang ditentukan untuk setiap elemen dalam aliran input, menghasilkan aliran baru hasil. Sebagai contoh, coretan kod berikut menggunakan map() untuk menggandakan nilai setiap integer dalam senarai:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .map(i -> i * 2) .forEach(System.out::println);
Output kod ini ialah:
2 4 6 8 10
Kaedah flatMap()
Kaedah flatMap() juga menggunakan fungsi yang ditentukan untuk setiap elemen dalam input aliran, tetapi ia tidak menghasilkan aliran hasil baharu. Sebaliknya, ia menggabungkan hasil penggunaan fungsi pada setiap elemen ke dalam satu strim.
Sebagai contoh, coretan kod berikut menggunakan flatMap() untuk menggabungkan aksara individu dalam senarai rentetan ke dalam strim baharu:
List<String> words = Arrays.asList("hello", "world", "java"); words.stream() .flatMap(word -> Arrays.stream(word.split(""))) .forEach(System.out::println);
Output kod ini ialah:
h e l l o w o r l d j a v a
Kunci Perbezaan
Perbezaan utama antara map() dan flatMap() ialah map() menghasilkan aliran nilai baharu, manakala flatMap() menghasilkan aliran rata yang menggabungkan hasil penggunaan fungsi kepada setiap elemen.
Atas ialah kandungan terperinci Apakah perbezaan antara kaedah `map()` dan `flatMap()` untuk pemprosesan strim dalam Java 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!