Prinsip
Mari kita mulakan dengan Strim mudah yang mana kita boleh mencipta penyahpepijat Strim asas dalam IntelliJ:
.sorted()
.collect(toList());
Kod di atas mencipta Strim yang terdiri daripada rentetan "A", "B", dan "C". Strim ini kemudiannya diisih()ed, mencipta Strim baharu (sekurang-kurangnya dalam Java 8-10) yang unsur-unsurnya ialah susunan abjad unsur Strim pertama. Dengan kata lain, Aliran kedua mengandungi tiga elemen: "A", "B", dan "C". Akhirnya, ini meletakkan elemen ke dalam Senarai.
Stream
Strim
Senaraikan
Ini secara amnya menunjukkan cara penyahpepijat Strim berfungsi. Ia membahagikan operasi saluran paip strim kepada berbilang serpihan kod dan memanggil operasi perantaraan langkah demi langkah, supaya kandungan elemen setiap operasi boleh dikekalkan untuk analisis.
Stream.of("C", "B", "A")
.peek(saveStep(0))
.sorted()
.peek(saveStep(1))
.collect(toList()); // Hasil akhir disimpan ke langkah 2
NOTA: Pelaksanaan teknikal sebenar tidak seperti ini, ia hanya memberikan gambaran yang baik.
Terdapat lebih banyak perwakilan visual dalam penyahpepijat IntelliJ:
Ia secara ringkas dan jelas memaparkan butiran setiap operasi perantaraan dalam saluran paip Stream, serta keputusan akhir.
Panggil
Jika anda ingin memanggil penyahpepijat strim, anda mesti menetapkan titik putus pada definisi Strim:
Kemudian, mulakan sesi nyahpepijat (jalankan dalam mod nyahpepijat):
Apabila titik putus dicapai, anda boleh menekan butang yang ditentukan (yang mungkin sukar dicari) untuk memanggil penyahpepijat Strim, yang ditandakan dengan bulatan merah di bawah:
Ini membuka penyahpepijat strim, seperti yang ditunjukkan di atas.
Aliran Pangkalan Data
Saya akan menggunakan Speedment (stream ORM), yang membenarkan pertanyaan pangkalan data melalui operasi Java Streams standard dan oleh itu operasi penyahpepijatan melalui IntelliJ. Projek Speedment boleh dibuat melalui pemula Speedment.
Aplikasi Java boleh dibuat dengan cara berikut.
Apl kelajuan = SakilaApplicationBuilder() baharu
.withPassword("sakila-password") // Gantikan dengan kata laluan anda sendiri
.build();
FilemPengurus Filem = app.getOrThrow(FilmManager.class);
Sekarang kita boleh menstrim jadual "filem" pangkalan data. Berikut ialah contoh:
Senaraikan
.filter(Filem.LENGTH.equal(60))
.sorted(Filem.RATING.reversed())
.collect(toList());
Kod ini akan menapis semua objek Filem dengan panjang 60 minit, kemudian mengisih objek Filem (dalam tertib menurun) mengikut Film.RATING, dan akhirnya meletakkan semua elemen ke dalam Senarai.
Apabila kita memanggil penyahpepijat Strim, kita akan melihat gambar berikut:
Kita dapat melihat bahawa terdapat 1000 filem dalam aliran awal. Selepas operasi penapisan, hanya 8 filem yang tinggal, yang kemudiannya diisih dan dimasukkan ke dalam Senarai.
Kira Statistik
Katakan kita ingin mengira tempoh minimum, maksimum dan purata bagi semua filem yang dinilai PG-13 (sejenis sistem penilaian filem). Kodnya adalah seperti berikut:
Statistik IntSummaryStatistics = films.stream()
.filter(Filem.RATING.equal("PG-13"))
.mapToInt(Filem.LENGTH.asInt())
.summaryStatistics();
Seperti yang anda lihat, kami boleh berinteraksi dengan penyahpepijat Strim dan klik pada elemen dalam saluran paip untuk menyerlahkannya, dan kami juga boleh menatal antara elemen untuk melihat langkah individu.
Speedment mengoptimumkan operasi perantaraan Stream pangkalan data dan menyepadukannya ke dalam pertanyaan SQL. Tetapi apabila menggunakan penyahpepijat Strim, pengoptimuman tidak berkuat kuasa supaya kita dapat melihat semua langkah operasi dalam saluran paip Strim.
Atas ialah kandungan terperinci Bagaimana untuk menyahpepijat Java Streams menggunakan IntelliJ. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!