Rumah >Java >javaTutorial >Sentiasa ingatkan \'Kebenaran hampa\' semasa mengekod dengan API java.util.stream
Pernahkah anda menghadapi senario dalam pengaturcaraan di mana anda perlu menyemak sama ada semua elemen dalam senarai atau aliran memenuhi syarat tertentu? Ini adalah corak biasa dalam pengekodan, tetapi apa yang berlaku apabila senarai itu kosong? Di sinilah konsep kebenaran hampa berlaku.
Sebelum kita menyelami definisi matematik, mari kita mulakan dengan contoh praktikal dalam kod untuk memahami apa itu kebenaran hampa.
Bayangkan anda ditugaskan untuk menyemak sama ada semua elemen dalam senarai memenuhi syarat tertentu. Jika mereka melakukannya, anda melakukan tindakan tertentu. Sebagai contoh, pertimbangkan coretan kod Java berikut:
public static void main(String[] args) { // Example - 1, expected to do something if (allNumbersAreOdd(Arrays.asList(1, 3, 5))) { System.out.println("do something 1"); } // Example - 2, NOT expected to do anything because NOT all numbers are odd if (allNumbersAreOdd(Arrays.asList(1, 2, 3, 4, 5))) { System.out.println("do something 2"); } // Example - 3, NOT expected to do anything because list is empty so there is no odd number. /* This is the surprising element which is known as "Vacuous truth" and it will print "do something". * It is applicable to both allMatch(Predicate<? super T> predicate) * and noneMatch(Predicate<? super T> predicate) */ if (allNumbersAreOdd(Collections.emptyList())) { System.out.println("do something 3"); } } private static boolean allNumbersAreOdd(@Nonnull List<Integer> numbers) { return numbers.stream().allMatch(integer -> integer % 2 != 0); }
Contoh ketiga sangat menarik. Mengapakah ia mengembalikan "Semua nombor sebagai ganjil" apabila senarai itu kosong?
Tingkah laku ini adalah contoh kebenaran yang hampa. Dalam logik matematik, pernyataan yang menegaskan sesuatu tentang semua elemen set kosong dianggap benar. Ini kerana tiada unsur dalam set yang bercanggah dengan pernyataan tersebut.
Menurut Wikipedia:
"Kebenaran hampa ialah pernyataan yang menegaskan bahawa semua ahli himpunan kosong mempunyai sifat tertentu. Kenyataan sedemikian dianggap benar kerana tiada contoh balas dalam himpunan kosong."
Dalam erti kata lain, apabila kita menyebut, "Semua elemen set S mempunyai sifat P," dan jika S kosong, pernyataan ini adalah benar kerana tidak ada satu unsur pun dalam S yang berpotensi melanggar sifat P
Memahami kebenaran hampa adalah penting dalam pengaturcaraan kerana ia boleh memberi kesan kepada logik dan hasil kod anda, terutamanya apabila berurusan dengan koleksi, strim atau sebarang senario di mana input anda mungkin kosong.
Kesimpulan
Lain kali anda menulis fungsi yang menyemak sama ada semua elemen dalam senarai atau aliran memenuhi syarat, ingat konsep kebenaran hampa. Ia menerangkan sebab kod anda mungkin berkelakuan dengan cara yang tidak dijangka apabila input kosong. Menyedari perkara ini boleh membantu anda menulis program yang lebih mantap dan boleh diramal.
Jika anda mempunyai keperluan senarai/strim kosong tidak boleh dinilai sebagai benar, maka anda perlu mempertimbangkan semakan tambahan pada senarai/strim.
private static boolean allNumbersAreOdd(@Nonnull List<Integer> numbers) { return !numbers.isEmpty() && numbers.stream().allMatch(integer -> integer % 2 != 0); }
Atas ialah kandungan terperinci Sentiasa ingatkan \'Kebenaran hampa\' semasa mengekod dengan API java.util.stream. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!