Rumah >Java >javaTutorial >Sentiasa ingatkan \'Kebenaran hampa\' semasa mengekod dengan API java.util.stream

Sentiasa ingatkan \'Kebenaran hampa\' semasa mengekod dengan API java.util.stream

王林
王林asal
2024-09-03 15:52:21723semak imbas

Keep

  • Pengenalan
  • Apa itu Vacuous Truth?
    • Pernyataan Masalah
    • Masukkan Kebenaran Kosong
      • Takrifan Matematik Kebenaran Kosong
    • Mengapa Ini Penting dalam Pengaturcaraan?
    • Rujukan

pengenalan

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.

Apa itu Vacuous Truth?

Sebelum kita menyelami definisi matematik, mari kita mulakan dengan contoh praktikal dalam kod untuk memahami apa itu kebenaran hampa.

Pernyataan Masalah

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?

Masukkan Kebenaran 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.

Definisi Matematik Kebenaran Kosong

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

Mengapa Ini Penting dalam Pengaturcaraan?

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);
  }

Rujukan

  • Wikipedia: Kebenaran hampa
  • Nota API dalam dokumentasi Java:
    • boolean allMatch(Predikat predikat)
    • boolean noneMatch(Predikat predikat)

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!

Kenyataan:
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