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

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

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

Apa Itu Stream?

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

Bagaimana Streaming Bekerja

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

instagram viewer

Untuk mengubah koleksi menjadi aliran awal, Anda harus menambahkan aliran() berfungsi sebagai sumber. Ini akan menempatkan sumber ke dalam pipa aliran di mana beberapa operasi perantara yang berbeda (seperti Saring() dan menyortir()) dapat mengoperasikannya.

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

Hidup Tanpa Arus

Java 8 dirilis pada 2014, namun sebelum itu, developer Java masih perlu mengekstrak data khusus dari kumpulan data umum.

Misalkan Anda memiliki daftar karakter acak yang digabungkan dengan angka acak untuk membentuk nilai string unik, tetapi Anda hanya ingin nilai yang dimulai dengan karakter "C" dan Anda ingin mengatur hasilnya dalam menaik memesan. Beginilah cara Anda mengekstrak data itu tanpa aliran.

Terkait: Yang Perlu Anda Ketahui Tentang Menggunakan String di Java

Contoh Memfilter dan Mengurutkan Nilai Tanpa Aliran


import java.util. ArrayList;
import java.util. Array;
import java.util. Daftar;
kelas umum Utama {
public static void main (String [] args) {
// mendeklarasikan dan menginisialisasi daftar array
Daftar 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"
);
// mendeklarasikan daftar array akan menyimpan nilai yang dibutuhkan
Daftar requiredValues ​​= new ArrayList <> ();
// mengekstrak nilai yang diperlukan dan menyimpannya di reqquiredValues
randomValues.forEach (nilai -> {
if (value.startsWith ("C")) {
requiredValues.add (nilai);
}
});
// urutkan requiredValues ​​dalam urutan menaik
requiredValues.sort ((Nilai string1, Nilai string2) -> nilai1.compareTo (nilai2));
// cetak setiap nilai ke konsol
requiredValues.forEach ((Nilai string) -> System.out.println (nilai));
}
}

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

Terkait: Cara Membuat dan Melakukan Operasi pada Array di Java

Kode di atas menghasilkan keluaran berikut di konsol:


C11
C12
C13
C14
C15
C16

Hidup Dengan Arus

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

Melanjutkan contoh kami di atas, berikut adalah cara memperkenalkan aliran mengubah seluruh program.

Memfilter dan Menyortir Nilai Dengan Contoh Aliran


import java.util. Array;
import java.util. Daftar;
kelas umum Utama {
public static void main (String [] args) {
// mendeklarasikan dan menginisialisasi daftar array
Daftar 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"
);
// hanya mengambil nilai yang dimulai dengan C, mengurutkannya, dan mencetaknya ke konsol.
randomValues.stream (). filter (value-> value.startsWith ("C")). sort (). forEach (System.out:: println);
}
}

Kode di atas menunjukkan betapa kuatnya antarmuka streaming. Ini mengambil daftar nilai array acak dan mengubahnya menjadi aliran menggunakan aliran() fungsi. Aliran tersebut kemudian direduksi menjadi daftar array yang berisi nilai-nilai yang diperlukan (yang semua nilai dimulai dengan C), menggunakan Saring() fungsi.

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

Fungsi terakhir dari aliran pipa 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

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

Pipeline streaming selalu dimulai dengan satu sumber dan a aliran() berfungsi, dan selalu diakhiri dengan operasi terminal tunggal (meskipun ada beberapa yang berbeda untuk pilih dari.) Namun di antara dua bagian ini ada daftar enam operasi perantara yang Anda bisa menggunakan.

Dalam contoh kami di atas, hanya dua dari operasi perantara ini yang digunakanSaring() 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 larik kami di atas menggunakan huruf kecil, dan kami melakukan operasi perantara yang sama pada nilai tersebut, kami akan mendapatkan hasil sebagai berikut.

Melakukan Operasi Filter dan Sortir pada Contoh Nilai Huruf Kecil


import java.util. Array;
import java.util. Daftar;
kelas umum Utama {
public static void main (String [] args) {
// mendeklarasikan dan menginisialisasi daftar array
Daftar 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"
);
// hanya mengambil nilai yang dimulai dengan C, mengurutkannya, dan mencetaknya ke konsol.
randomValues.stream (). filter (value-> value.startsWith ("C")). sort (). forEach (System.out:: println);
}
}

Kode di atas akan menghasilkan nilai berikut di konsol:


C11
C12
C14
C15

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

Menggunakan Contoh Fungsi Peta


import java.util. Array;
import java.util. Daftar;
kelas umum Utama {
public static void main (String [] args) {
// mendeklarasikan dan menginisialisasi daftar array
Daftar 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"
);
// mengubah semua karakter huruf kecil menjadi huruf besar,
// hanya mengambil nilai yang dimulai dengan C, mengurutkannya, dan mencetaknya ke konsol.
randomValues.stream (). map (String:: toUpperCase) .filter (value-> value.startsWith ("C")). sort (). forEach (System.out:: println);
}
}

Itu peta() fungsi mengubah objek dari satu keadaan ke keadaan lain; dalam contoh kami di atas, ini mengubah semua karakter huruf kecil dalam daftar array menjadi karakter huruf besar.

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

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


C11
C12
C13
C14
C15
C16

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

  • mengintip()
  • membatasi()
  • melewatkan()

Java 8 Streams Memfasilitasi Pembuatan Kode yang Efisien

Dengan aliran Java 8, Anda dapat mengekstrak data yang sangat spesifik dan relevan dari sumber besar dengan satu baris kode. Asalkan Anda memasukkan inisialnya aliran() berfungsi dan operator terminal, Anda dapat menggunakan kombinasi apa pun dari operasi perantara yang memberikan keluaran yang sesuai untuk tujuan Anda.

Jika Anda bertanya-tanya tentang baris kode yang disertakan dalam 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.

Surel
Pengantar Cepat Java 8 Lambdas

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

Baca Selanjutnya

Topik-topik yang berkaitan
  • Pemrograman
  • Jawa
  • Tutorial Coding
Tentang Penulis
Kadeisha Kean (13 Artikel Dipublikasikan)

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

Selebihnya Dari Kadeisha Kean

Berlangganan newsletter kami

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

Satu langkah lagi…!

Harap konfirmasi alamat email Anda di email yang baru saja kami kirimkan kepada Anda.

.