Rumah > Java > javaTutorial > teks badan

Bagaimana untuk menyahpepijat Java Streams menggunakan IntelliJ

王林
Lepaskan: 2023-04-26 22:01:06
ke hadapan
1483 orang telah melayarinya

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 s0 = Stream.of("C", "B", "A"); // "C", "A", "B"

Strim s1 = s0.sorted(); // "A", "B", "C"

Senaraikan rentetan = s1.collect(toList()); // ["A", "B", "C"]

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 peta = films.stream()

.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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan