Rumah  >  Artikel  >  Java  >  Apakah perbezaan antara kaedah `map()` dan `flatMap()` untuk pemprosesan strim dalam Java 8?

Apakah perbezaan antara kaedah `map()` dan `flatMap()` untuk pemprosesan strim dalam Java 8?

Barbara Streisand
Barbara Streisandasal
2024-11-17 05:02:03420semak imbas

What is the difference between `map()` and `flatMap()` methods for stream processing in Java 8?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn