Rumah > Java > javaTutorial > 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
Lepaskan: 2024-11-17 05:02:03
asal
486 orang telah melayarinya

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);
Salin selepas log masuk

Output kod ini ialah:

2
4
6
8
10
Salin selepas log masuk

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);
Salin selepas log masuk

Output kod ini ialah:

h
e
l
l
o
w
o
r
l
d
j
a
v
a
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan