Rumah  >  Artikel  >  Java  >  Cara menggunakan fungsi Strim dalam Java untuk operasi strim

Cara menggunakan fungsi Strim dalam Java untuk operasi strim

PHPz
PHPzasal
2023-06-26 14:10:111397semak imbas

Fungsi Stream dalam Java ialah ciri baharu yang diperkenalkan dalam Java 8. Ia menyediakan cara baharu sepenuhnya untuk mengendalikan set data seperti koleksi dan tatasusunan. Stream menyediakan kaedah pengaturcaraan berfungsi untuk melaksanakan operasi strim, dan juga sangat memudahkan penulisan kod. Dalam artikel ini, kami akan meneroka cara melaksanakan operasi penstriman menggunakan fungsi Strim dalam Java.

1. Apakah fungsi Stream

Fungsi Stream ialah ciri baharu yang diperkenalkan di Java 8. Ia memberikan kami cara pengaturcaraan berfungsi untuk melaksanakan operasi strim untuk memudahkan kod kami. Fungsi Stream boleh digunakan untuk mengendalikan elemen dalam struktur data seperti koleksi dan tatasusunan untuk mencapai fungsi yang kami perlukan.

Fungsi Stream mempunyai dua mod operasi, iaitu operasi perantaraan dan operasi penamatan. Operasi perantaraan boleh dilakukan beberapa kali, manakala operasi penamatan menghentikan pemprosesan strim dan mengembalikan hasil atau kesan sampingan. Pada masa yang sama, Stream juga mempunyai keupayaan pemprosesan selari.

2. Gunakan fungsi Strim untuk operasi strim

  1. Buat Strim

Kita boleh mendapatkan objek strim melalui kaedah strim() koleksi atau kaedah Strim.of() tatasusunan. Contohnya:

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream1 = list.stream(); // 通过list对象获取stream对象
Stream<Integer> stream2 = Stream.of(1, 2, 3); // 通过Stream.of()方法获取stream对象
  1. Operasi perantaraan

Stream menyediakan banyak kaedah operasi perantaraan, yang boleh melakukan operasi penapisan, pemetaan, penghirisan dan lain-lain. Mari kita lihat kaedah operasi ini satu persatu:

(1) kaedah penapis(): elemen penapis

List<Integer> list = Arrays.asList(1, 2, 3, 4);
Stream<Integer> stream = list.stream();
stream.filter(i -> i%2 == 0).forEach(System.out::println); // 输出2和4

(2) kaedah peta(): elemen peta

List<String> list = Arrays.asList("Java", "Python", "Ruby");
Stream<String> stream = list.stream();
stream.map(String::toLowerCase).forEach(System.out::println); // 输出java, python, ruby

(3) kaedah flatMap(): ratakan flow

List<List<Integer>> list = Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4), Arrays.asList(5, 6));
Stream<List<Integer>> stream = list.stream();
stream.flatMap(Collection::stream).forEach(System.out::println); // 输出1, 2, 3, 4, 5, 6

(4) kaedah distinct(): alih keluar pendua

List<Integer> list = Arrays.asList(1, 2, 3, 1, 2, 3);
Stream<Integer> stream = list.stream();
stream.distinct().forEach(System.out::println); // 输出1, 2, 3

(5) kaedah sorted(): kaedah sort

List<Integer> list = Arrays.asList(3, 2, 1);
Stream<Integer> stream = list.stream();
stream.sorted().forEach(System.out::println); // 输出1, 2, 3

(6) limit() kaedah: hadkan bilangan elemen

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.limit(3).forEach(System.out::println); // 输出1, 2, 3

(7) langkau( ) kaedah: Langkau elemen

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.skip(2).forEach(System.out::println); // 输出3, 4, 5

(8) peek() kaedah: Tambahkan elemen

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream1 = list.stream();
Stream<Integer> stream2 = stream1.peek(System.out::println);
stream2.count(); // 输出1, 2, 3
  1. Operasi penamatan

Stream menyediakan banyak kaedah operasi penamatan, yang boleh mengembalikan hasil pemprosesan strim. Mari kita lihat kaedah operasi ini satu demi satu:

(1) kaedah forEach(): lelaran elemen dalam strim

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
stream.forEach(System.out::println); // 输出1, 2, 3

(2) count() kaedah: kira bilangan elemen

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
stream.count(); // 输出3

(3) kaedah toArray() : Tukar elemen dalam strim kepada tatasusunan

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
Object[] array = stream.toArray();
System.out.println(Arrays.toString(array)); // 输出[1, 2, 3]

(4) kaedah reduce(): Kurangkan elemen dalam strim

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
int result = stream.reduce(0, (x, y) -> x + y);
System.out.println(result); // 输出6

(5) collect() kaedah: Kumpulkan elemen dalam strim

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();
List<Integer> newList = stream.collect(Collectors.toList());
System.out.println(newList); // 输出[1, 2, 3]
  1. Operasi aliran selari

Fungsi Strim juga menyediakan fungsi operasi aliran selari, dan aliran boleh ditukar kepada aliran selari melalui kaedah selari(). Strim selari boleh menggunakan sepenuhnya kuasa pemprosesan CPU berbilang teras dan meningkatkan kecekapan menjalankan program. Contohnya:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.parallelStream();
stream.forEach(System.out::println); // 输出1, 2, 3, 4, 5

3. Ringkasan

Fungsi Stream ialah ciri baharu dalam Java 8, yang menyediakan cara baharu untuk mengendalikan set data seperti koleksi dan tatasusunan. Melalui operasi perantaraan dan operasi penamatan fungsi Strim, kami boleh menapis, memetakan, menyahduplikasi, mengisih, mengehadkan bilangan elemen, melangkau elemen, menambah elemen dan operasi lain dengan mudah. Pada masa yang sama, melalui operasi aliran selari, kami boleh menggunakan sepenuhnya kuasa pemprosesan CPU berbilang teras dan meningkatkan kecekapan menjalankan program. Pengenalan di atas hanyalah sebahagian daripada fungsi fungsi Strim Logik perniagaan kompleks yang perlu dilaksanakan dengan menggunakan pelbagai kaedah operasi fungsi Strim.

Atas ialah kandungan terperinci Cara menggunakan fungsi Strim dalam Java untuk operasi strim. 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