Rumah > Java > javaTutorial > Menguasai Aliran Java: Panduan Lengkap untuk Pembangun

Menguasai Aliran Java: Panduan Lengkap untuk Pembangun

Linda Hamilton
Lepaskan: 2024-11-27 19:53:10
asal
894 orang telah melayarinya

Mastering Java Streams: A Complete Guide for Developers

Java Stream, yang diperkenalkan dalam Java 8, adalah salah satu tambahan yang paling berkuasa kepada bahasa tersebut. Ia mendayakan operasi gaya fungsian pada koleksi dan jujukan, mengubah cara kami mendekati pemprosesan data dalam Java. Strim memudahkan tugas seperti menapis, memetakan dan mengumpul data sambil turut menyokong operasi selari untuk peningkatan prestasi. Dalam siaran ini, kami akan meneroka asas Strim, membincangkan jenis operasi yang mereka sokong dan memberikan contoh untuk membantu anda memanfaatkan sepenuhnya ciri penting ini.

Jadual Kandungan

1.  What is Streams and why we need it?
2.  Types of Streams: Intermediate vs. Terminal
3.  Creating Streams in Java
4.  Intermediate Stream Operations
5.  Terminal Stream Operations
6.  Using Streams with Lambdas
7.  Conclusion
Salin selepas log masuk
Salin selepas log masuk

Apakah itu Strim dan mengapa kita memerlukannya?

Strim dalam Java menyediakan cara yang berkuasa untuk memproses koleksi data. Ia membenarkan kami melaksanakan operasi berfungsi pada elemen koleksi, seperti penapisan dan transformasi, tanpa mengubah data asas. Strim membantu pembangun menumpukan pada perkara yang ingin mereka capai, bukannya cara mencapainya, memberikan abstraksi peringkat lebih tinggi untuk pemprosesan data.

Strim diperkenalkan dalam Java 8 bersama ekspresi lambda dan antara muka berfungsi, direka untuk menjadikan Java lebih ekspresif dan mengurangkan kod boilerplate. Dengan menggabungkan strim, Java mula menerima paradigma pengaturcaraan berfungsi, membolehkan kod yang lebih bersih dan ringkas.

Faedah Utama Strim

  • Pemprosesan Data Pengisytiharan: Terangkan operasi yang ingin anda lakukan, bukannya mengurus gelung dan keadaan secara manual.
  • Ketidakbolehubahan dan Ketiadaan Negara: Operasi aliran tidak mengubah suai struktur data sumber.
  • Pemprosesan Selari: Sokongan untuk strim selari, membolehkan operasi diedarkan merentas berbilang rangkaian dengan mudah.

Jenis Aliran: Perantaraan lwn Terminal

Strim dikelaskan kepada dua jenis utama:

  • Operasi Perantaraan: Operasi ini mengubah strim, mengembalikan strim lain sebagai hasilnya. Mereka malas—bermakna mereka tidak dilaksanakan sehingga operasi terminal dipanggil.
  • Operasi Terminal: Operasi ini mencetuskan pemprosesan data strim dan mengembalikan hasil bukan strim (cth., koleksi, nilai tunggal atau boolean). Setelah operasi terminal dilaksanakan, strim itu dianggap telah digunakan dan tidak boleh digunakan semula.

Contoh:

List<String> names = List.of("Alice", "Bob", "Charlie", "David");

// Intermediate (lazy) operations: filter and map
Stream<String> stream = names.stream()
                             .filter(name -> name.startsWith("A"))
                             .map(String::toUpperCase);

// Terminal operation: collect
List<String> filteredNames = stream.collect(Collectors.toList());
System.out.println(filteredNames); // Output: [ALICE]
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, penapis dan peta ialah operasi perantaraan yang tidak akan dilaksanakan sehingga kutipan operasi terminal dipanggil.

Mencipta Strim dalam Java

Java menyediakan beberapa cara untuk mencipta strim, menjadikannya mudah untuk mula memproses data.

  • Dari Koleksi

Cara paling biasa untuk membuat strim ialah daripada koleksi seperti Senarai, Set dan Peta.

1.  What is Streams and why we need it?
2.  Types of Streams: Intermediate vs. Terminal
3.  Creating Streams in Java
4.  Intermediate Stream Operations
5.  Terminal Stream Operations
6.  Using Streams with Lambdas
7.  Conclusion
Salin selepas log masuk
Salin selepas log masuk
  • Daripada Tatasusunan
List<String> names = List.of("Alice", "Bob", "Charlie", "David");

// Intermediate (lazy) operations: filter and map
Stream<String> stream = names.stream()
                             .filter(name -> name.startsWith("A"))
                             .map(String::toUpperCase);

// Terminal operation: collect
List<String> filteredNames = stream.collect(Collectors.toList());
System.out.println(filteredNames); // Output: [ALICE]
Salin selepas log masuk
Salin selepas log masuk
  • Menggunakan Stream.of
List<String> names = List.of("Alice", "Bob", "Charlie");
Stream<String> nameStream = names.stream();
Salin selepas log masuk
  • Strim Tak Terhingga (Strim Dijana)

Java membenarkan mencipta strim tak terhingga menggunakan Stream.generate dan Stream.iterate.

String[] namesArray = {"Alice", "Bob", "Charlie"};
Stream<String> nameStream = Arrays.stream(namesArray);
Salin selepas log masuk

Operasi Aliran Perantaraan

Operasi perantaraan mengembalikan aliran baharu dan malas. Ini bermakna ia dilaksanakan hanya apabila operasi terminal dipanggil.

  • penapis(Predikat)

Menapis elemen berdasarkan keadaan.

Stream<String> stream = Stream.of("Alice", "Bob", "Charlie");
Salin selepas log masuk
  • peta(Fungsi)

Mengubah elemen daripada satu jenis kepada jenis yang lain.

Stream<Double> randomNumbers = Stream.generate(Math::random).limit(5);
Stream<Integer> counting = Stream.iterate(0, n -> n + 1).limit(5);
Salin selepas log masuk
  • diisih(Pembanding)

Isih unsur dalam susunan semula jadi atau berdasarkan pembanding.

List<Integer> numbers = List.of(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
                                   .filter(n -> n % 2 == 0)
                                   .collect(Collectors.toList());
Salin selepas log masuk
  • lihat(Pengguna)

Melakukan tindakan pada setiap elemen, selalunya berguna untuk nyahpepijat.

List<String> names = List.of("Alice", "Bob");
List<Integer> nameLengths = names.stream()
                                 .map(String::length)
                                 .collect(Collectors.toList());
Salin selepas log masuk

Operasi Aliran Terminal

Operasi terminal dilaksanakan terakhir, mencetuskan pemprosesan data sebenar dan mengembalikan hasil akhir.

  • untukSetiap(Pengguna)

Melaksanakan tindakan untuk setiap elemen dalam strim.

List<String> names = List.of("Bob", "Alice", "Charlie");
List<String> sortedNames = names.stream()
                                .sorted()
                                .collect(Collectors.toList());
Salin selepas log masuk
  • kumpul(Pengumpul)

Mengumpul elemen strim ke dalam koleksi, senarai, set atau struktur data lain.

List<String> names = List.of("Alice", "Bob");
names.stream()
     .peek(name -> System.out.println("Processing " + name))
     .collect(Collectors.toList());
Salin selepas log masuk
  • kira()

Mengira bilangan elemen dalam strim.

List<String> names = List.of("Alice", "Bob");
names.stream().forEach(System.out::println);
Salin selepas log masuk
  • anyMatch(Predicate), allMatch(Predicate), noneMatch(Predicate)

Menyemak sama ada ada, semua atau tiada unsur sepadan dengan syarat yang diberikan.

List<String> names = List.of("Alice", "Bob");
Set<String> nameSet = names.stream().collect(Collectors.toSet());
Salin selepas log masuk
  • findFirst() dan findAny()

Mengembalikan Pilihan yang menerangkan unsur pertama atau mana-mana strim.

List<String> names = List.of("Alice", "Bob");
long count = names.stream().count();
Salin selepas log masuk

Menggunakan Strim dengan Lambdas

Strim dan ekspresi lambda berjalan seiring. Oleh kerana strim adalah berdasarkan antara muka berfungsi, ia berfungsi dengan lancar dengan lambdas, membolehkan pemprosesan data yang ekspresif dan ringkas.

Sebagai contoh, menapis senarai nama untuk mencari nama bermula dengan "A" dan kemudian menukarnya kepada huruf besar:

List<String> names = List.of("Alice", "Bob", "Charlie");
boolean hasAlice = names.stream().anyMatch(name -> name.equals("Alice"));
Salin selepas log masuk

Dalam contoh ini:

  • penapis menggunakan nama lambda -> name.startsWith("A") untuk menapis nama.
  • peta mengambil String rujukan kaedah::toUpperCase untuk menukar nama kepada huruf besar.

Kesimpulan

Java Streams membawa keupayaan pengaturcaraan berfungsi ke Java, membolehkan manipulasi data yang ekspresif dan ringkas. Dengan memahami perbezaan antara operasi perantaraan dan terminal serta cara mencipta dan menggunakan strim dengan berkesan, anda boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod anda dengan ketara. Sepadukan strim dan lambda dalam aliran kerja anda untuk menulis aplikasi Java yang lebih bersih dan cekap.

Selamat penstriman!

Atas ialah kandungan terperinci Menguasai Aliran Java: Panduan Lengkap untuk Pembangun. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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