Rumah >Java >javaTutorial >Cuti atau kembali dari Java 8 Stream Foreach?
operasi? forEach
Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. forEach
Bacaan Lanjut: Penambahbaikan API Java Stream
memahami aliran foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Ia direka untuk mengendalikan setiap elemen; forEach
break
return
Dalam contoh di atas,
<code class="language-java">List<string> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream().forEach(name -> { System.out.println(name); });</string></code>
Mengapa anda tidak boleh menggunakan rehat atau kembali? forEach
pernyataan tidak dibenarkan dalam ekspresi lambda di dalamnya. Kenyataan forEach
di dalam ungkapan lambda hanya akan keluar dari ungkapan lambda itu sendiri, dan tidak akan keluar dari break
atau kaedah tertutupnya. Cuba menggunakan continue
atau return
akan menghasilkan ralat penyusunan: forEach
break
continue
kaedah alternatif
<code class="language-java">names.stream().forEach(name -> { if (name.equals("Bob")) { break; // 编译错误 } });</code>1.
2.
Kaedah for
<code class="language-java">for (String name : names) { if (name.equals("Bob")) { break; } System.out.println(name); }</code>
Jika anda menggunakan Java 9 atau lebih baru, anda boleh menggunakan kaedah anyMatch()
untuk memproses unsur -unsur sehingga keadaan tertentu dipenuhi.
<code class="language-java">boolean found = names.stream().anyMatch(name -> { if (name.equals("Bob")) { // 执行操作 System.out.println("找到Bob"); return true; // 这将使Stream短路 } System.out.println(name); return false; });</code>
, tetapi ini tidak disyorkan. takeWhile
<code class="language-java">names.stream() .takeWhile(name -> !name.equals("Bob")) .forEach(System.out::println);</code>5
anyMatch
, noneMatch
, takeWhile
(java 9) kaedah mungkin lebih sesuai. Kaedah forEach
dalam aliran Java 8 tidak membenarkan penggunaan break
atau return
seperti gelung tradisional, tetapi terdapat beberapa cara untuk memintas batasan ini. Memahami kaedah ini akan membantu anda memilih pilihan terbaik berdasarkan keadaan sebenar.
Atas ialah kandungan terperinci Cuti atau kembali dari Java 8 Stream Foreach?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!