Rumah  >  Artikel  >  Java  >  Bila hendak menggunakan map() vs. flatMap() dalam Java 8 Streams?

Bila hendak menggunakan map() vs. flatMap() dalam Java 8 Streams?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-17 05:00:03788semak imbas

When to Use map() vs. flatMap() in Java 8 Streams?

Memahami Perbezaan Antara Kaedah map() dan flatMap() dalam Java 8

API Strim yang diperkenalkan dalam Java 8 menyediakan operasi untuk memanipulasi aliran data. Dua kaedah penting dalam API ini ialah map() dan flatMap(), kedua-duanya digunakan untuk mengubah elemen dalam aliran, tetapi dengan perbezaan yang berbeza.

map() dan flatMap(): Analisis Perbandingan

  • map(): Kaedah map() menggunakan fungsi pemeta kepada setiap elemen dalam aliran, menghasilkan aliran dengan unsur-unsur berubah. Fungsi mapper menerima elemen input jenis T dan mengembalikan elemen output jenis R, menghasilkan Stream.
  • flatMap(): Tidak seperti map(), flatMap( ) menggunakan fungsi pemeta pada setiap elemen dalam aliran, tetapi hasilnya boleh menjadi aliran sifar atau lebih elemen. Fungsi pemeta dalam flatMap() menjangkakan elemen input jenis T dan mengembalikan aliran jenis Stream. Selepas itu, semua elemen daripada aliran yang terhasil ini digabungkan menjadi satu aliran, menghasilkan aliran elemen individu.

Perbezaan utama terletak pada jenis output. map() menghasilkan strim dengan unsur-unsur yang diubah daripada jenis yang sama, manakala flatMap() berpotensi menghasilkan strim unsur-unsur yang digabungkan untuk sebarang jenis.

Senario Penggunaan

  • map(): map() sesuai untuk transformasi mudah, seperti menukar rentetan kepada huruf besar atau menambah nilai.
  • flatMap(): flatMap() biasanya digunakan untuk transformasi yang lebih kompleks, seperti meratakan aliran senarai ke dalam aliran elemen individu atau melakukan rekursif operasi.

Contoh:

Pertimbangkan aliran rentetan yang mewakili laluan fail:

Stream<String> paths = Stream.of("path1", "path2", "path3");

Menggunakan peta():

Stream<String> pathsUpperCase = paths.map(String::toUpperCase);

Ini menghasilkan aliran fail berhuruf besar laluan.

Menggunakan flatMap():

Stream<String> wordsInPaths = paths.flatMap(path -> Stream.of(path.split("")));

Ini menghasilkan aliran aksara individu daripada setiap laluan.

Kesimpulan

map() dan flatMap() ialah kaedah berkuasa dalam Java 8 Stream API, masing-masing dengan keupayaan uniknya. Memahami perbezaan antara mereka adalah penting untuk manipulasi aliran yang cekap dan berkesan dalam Java.

Atas ialah kandungan terperinci Bila hendak menggunakan map() vs. flatMap() dalam Java 8 Streams?. 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