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
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对象
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
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]
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!