Java Streams untuk Pemula: Pengantar Menggunakan Streams di Java

Java Streams untuk Pemula: Pengantar Menggunakan Streams di Java

Aliran Java 8 memungkinkan pengembang untuk mengekstrak data yang tepat dari koleksi besar, menggunakan serangkaian operasi yang telah ditentukan.





Sebelum rilis Java 8, menggunakan istilah 'aliran' di Jawa secara otomatis akan dikaitkan dengan I/O. Namun, Java 8 memperkenalkan aliran yang dapat disebut sebagai serangkaian langkah komputasi yang dirantai bersama dalam apa yang biasa disebut sebagai 'pipa aliran.'





Artikel ini akan memperkenalkan Anda pada aliran Java 8 dan mendemonstrasikan bagaimana aliran tersebut dapat berguna dalam proyek Anda.





Apa itu Aliran?

Stream adalah antarmuka Java yang mengambil sumber, melakukan serangkaian operasi untuk mengekstrak data tertentu, kemudian menyediakan data tersebut ke aplikasi untuk digunakan. Pada dasarnya, ini memungkinkan Anda untuk mengekstrak data khusus dari kumpulan data umum.

Cara Kerja Streaming

Sebuah pipa aliran selalu dimulai dengan sumber. Jenis sumber bergantung pada jenis data yang Anda hadapi, tetapi dua yang lebih populer adalah array dan koleksi.



Untuk mengubah koleksi menjadi aliran awal, Anda harus menambahkan sungai kecil() fungsi ke sumbernya. Ini akan menempatkan sumber ke dalam pipa aliran di mana beberapa operasi perantara yang berbeda (seperti: Saring() dan menyortir() ) dapat beroperasi di atasnya.

Setelah semua operasi perantara yang diperlukan dilakukan, Anda dapat memperkenalkan operasi terminal (seperti: untuk setiap() ), yang akan menghasilkan data yang sebelumnya diekstraksi dari sumbernya.





Hidup Tanpa Aliran

Java 8 dirilis pada tahun 2014, tetapi sebelum itu, pengembang Java masih perlu mengekstrak data khusus dari kumpulan data umum.

cari tahu motherboard apa yang saya miliki windows 10

Katakanlah Anda memiliki daftar karakter acak yang digabungkan dengan angka acak untuk membentuk nilai string yang unik, tetapi Anda hanya menginginkan nilai yang dimulai dengan karakter C dan Anda ingin mengatur hasilnya dalam urutan menaik. Ini adalah bagaimana Anda akan mengekstrak data itu tanpa aliran.





Terkait: Yang Perlu Anda Ketahui Tentang Menggunakan String di Java

Memfilter dan Mengurutkan Nilai Tanpa Aliran Contoh


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//declare the array list will store needed values
List requiredValues = new ArrayList();
//extracting the required values and storing them in reqquiredValues
randomValues.forEach(value -> {
if(value.startsWith('C')) {
requiredValues.add(value);
}
});
//sort the requiredValues in ascending order
requiredValues.sort((String value1, String value2) -> value1.compareTo(value2));
//print each value to the console
requiredValues.forEach((String value) -> System.out.println(value));
}
}

Anda juga harus mendeklarasikan dan menginisialisasi daftar array apakah Anda menggunakan aliran atau metode ekstraksi lainnya. Apa yang tidak perlu Anda lakukan jika menggunakan stream adalah mendeklarasikan variabel baru untuk menampung nilai yang diperlukan, atau membuat lima baris kode plus lainnya dalam contoh di atas.

Terkait: Cara Membuat dan Melakukan Operasi pada Array di Java

Kode di atas menghasilkan output berikut di konsol:


C11
C12
C13
C14
C15
C16

Hidup Dengan Aliran

Dalam pemrograman, efisiensi berbicara untuk menghasilkan hasil yang sama dengan kode yang jauh lebih sedikit. Inilah tepatnya yang dilakukan pipa aliran untuk seorang programmer. Jadi pada saat seseorang bertanya: mengapa penting untuk menggunakan aliran dalam proyek Anda? Sederhananya: stream mendukung pemrograman yang efisien.

Melanjutkan contoh kami di atas, ini adalah bagaimana memperkenalkan aliran mengubah seluruh program.

Memfilter dan Mengurutkan Nilai Dengan Contoh Aliran


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'C13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'C16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

Kode di atas menunjukkan betapa kuatnya antarmuka aliran. Dibutuhkan daftar nilai array acak dan mengubahnya menjadi aliran menggunakan sungai kecil() fungsi. Aliran kemudian direduksi menjadi daftar larik yang berisi nilai yang diperlukan (yang merupakan semua nilai yang dimulai dengan C ), menggunakan Saring() fungsi.

Seperti yang Anda lihat pada contoh di atas, C nilai-nilai secara acak diatur dalam daftar array. Jika Anda mencetak aliran pada titik ini dalam pipa, nilainya C15 akan dicetak terlebih dahulu. Oleh karena itu, menyortir() fungsi diperkenalkan ke pipa aliran untuk mengatur ulang array baru dalam urutan menaik.

Fungsi terakhir dalam pipa aliran adalah a untuk setiap() fungsi. Ini adalah fungsi terminal yang digunakan untuk menghentikan pipa aliran dan menghasilkan hasil berikut di konsol:


C11
C12
C13
C14
C15
C16

Streaming Operasi Menengah

Ada daftar ekstensif operasi perantara yang dapat digunakan dalam pipa aliran.

Sebuah pipa aliran selalu dimulai dengan satu sumber dan a sungai kecil() fungsi, dan selalu diakhiri dengan satu operasi terminal (walaupun ada beberapa yang berbeda untuk dipilih.) Namun di antara kedua bagian ini terdapat daftar enam operasi perantara yang dapat Anda gunakan.

Dalam contoh kita di atas, hanya dua dari operasi perantara ini yang digunakan --- Saring() dan menyortir() . Operasi perantara yang Anda pilih akan bergantung pada tugas yang ingin Anda lakukan.

Jika salah satu nilai yang dimulai dengan C dalam daftar array kami di atas dalam huruf kecil, dan kami melakukan operasi perantara yang sama pada mereka, kami akan mendapatkan hasil berikut.

Melakukan Operasi Filter dan Sortir pada Nilai Huruf Kecil Contoh


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

Kode di atas akan menghasilkan nilai berikut di konsol:


C11
C12
C14
C15

Satu-satunya masalah dengan output di atas adalah tidak secara akurat mewakili semua C nilai dalam daftar array kami. Cara yang baik untuk memperbaiki kesalahan kecil ini adalah dengan memperkenalkan operasi perantara lain ke pipa aliran; Operasi ini dikenal sebagai peta() fungsi.

Menggunakan Contoh Fungsi Peta


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List randomValues = Arrays.asList(
'E11', 'D12', 'A13', 'F14', 'C15', 'A16',
'B11', 'B12', 'c13', 'B14', 'B15', 'B16',
'F12', 'E13', 'C11', 'C14', 'A15', 'c16',
'F11', 'C12', 'D13', 'E14', 'D15', 'D16'
);
//transforms all lower case characters to upper case,
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().map(String::toUpperCase).filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

NS peta() fungsi mengubah objek dari satu keadaan ke keadaan lain; dalam contoh kita di atas itu mengubah semua karakter huruf kecil dalam daftar array menjadi karakter huruf besar.

Menempatkan peta() berfungsi tepat sebelum Saring() fungsi mengambil semua nilai yang dimulai dengan C dari daftar array.

Kode di atas menghasilkan hasil berikut di konsol, berhasil mewakili semua: C nilai dalam daftar array.


C11
C12
C13
C14
C15
C16

Tiga operasi perantara lainnya yang dapat Anda gunakan dalam aplikasi Anda meliputi:

  • mengintip()
  • membatasi()
  • melewati()

Java 8 Streams Memfasilitasi Pembuatan Kode yang Efisien

Dengan aliran Java 8, Anda dapat mengekstrak data yang relevan dan ekstra spesifik dari sumber besar dengan satu baris kode. Selama Anda menyertakan inisial sungai kecil() fungsi dan operator terminal, Anda dapat menggunakan kombinasi operasi perantara apa pun yang memberikan output yang sesuai untuk tujuan Anda.

penyimpanan internal kartu sd android 7.0

Jika Anda bertanya-tanya tentang baris kode yang terlampir di dalam kami Saring() fungsi; itu dikenal sebagai 'ekspresi lambda.' Ekspresi Lambda adalah fitur lain yang diperkenalkan dengan Java 8, dan memiliki banyak nugget yang mungkin berguna bagi Anda.

Membagikan Membagikan Menciak Surel Pengantar Singkat Java 8 Lambdas

Jika Anda seorang programmer Java dan Anda tertarik untuk mempelajari lebih lanjut tentang lambda Java 8, dalam artikel ini kita akan melihat lebih dekat sintaks dan penggunaan lambda.

Baca Selanjutnya
Topik-topik yang berkaitan
  • Pemrograman
  • Jawa
  • Tutorial Pengkodean
Tentang Penulis Kadeisha Kean(21 Artikel Diterbitkan)

Kadeisha Kean adalah Pengembang Perangkat Lunak Full-Stack dan Penulis Teknis/Teknologi. Dia memiliki kemampuan yang berbeda untuk menyederhanakan beberapa konsep teknologi yang paling kompleks; menghasilkan materi yang dapat dengan mudah dipahami oleh setiap pemula teknologi. Dia bersemangat menulis, mengembangkan perangkat lunak yang menarik, dan berkeliling dunia (melalui film dokumenter).

More From Kadeisha Kean

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan