Java Academy · บทเรียน

Predicate และการประกอบ

ประกอบการทดสอบค่าบูลีน

บทเรียน 3 จาก 413 ขั้นตอน

Predicate และการประกอบ เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

Predicate ทำหน้าที่อะไร

Predicate<T> รับค่าและคืนค่า บูลีน

  • เมธอดของมันคือ boolean test(T t)
  • ใช้แทนเงื่อนไขแบบใช่หรือไม่ใช่
import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> isEven = n -> n % 2 == 0;
        System.out.println(isEven.test(4));
        System.out.println(isEven.test(5));
    }
}

Predicate ใน filter

Stream.filter รับ Predicate และเก็บไว้เฉพาะสมาชิกที่ตรงตามเงื่อนไข

import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Integer> nums = List.of(1, 2, 3, 4, 5, 6);
        List<Integer> evens = nums.stream()
            .filter(n -> n % 2 == 0)
            .collect(Collectors.toList());
        System.out.println(evens);
    }
}

การรวมด้วย and

and สร้างเพรดิเคตที่เป็นจริงก็ต่อเมื่อเพรดิเคตทั้งสองผ่านเงื่อนไข

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> positive = n -> n > 0;
        Predicate<Integer> even = n -> n % 2 == 0;
        Predicate<Integer> both = positive.and(even);
        System.out.println(both.test(4));
        System.out.println(both.test(-2));
    }
}

การรวมด้วย or

or คืนค่าเป็นจริงเมื่อเพรดิเคตอย่างน้อยหนึ่งรายการผ่านเงื่อนไข

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<String> empty = String::isEmpty;
        Predicate<String> shortStr = s -> s.length() < 3;
        Predicate<String> either = empty.or(shortStr);
        System.out.println(either.test(""));
        System.out.println(either.test("hi"));
        System.out.println(either.test("hello"));
    }
}

การกลับผลด้วย negate

negate กลับผลลัพธ์ของเพรดิเคต ทำให้ได้ค่า NOT ทางตรรกะ

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> even = n -> n % 2 == 0;
        Predicate<Integer> odd = even.negate();
        System.out.println(odd.test(3));
    }
}

ตัวช่วยแบบสแตติก Predicate.not

Predicate.not(p) เป็นวิธีแบบสแตติกที่อ่านเข้าใจง่ายสำหรับกลับเงื่อนไข โดยเฉพาะเมื่อใช้ร่วมกับการอ้างอิงเมธอด

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> words = List.of("", "a", "", "bc");
        List<String> nonEmpty = words.stream()
            .filter(Predicate.not(String::isEmpty))
            .collect(Collectors.toList());
        System.out.println(nonEmpty);
    }
}

Predicate.isEqual

Predicate.isEqual(target) สร้างเพรดิเคตที่ทดสอบความเท่ากันกับค่าคงที่ โดยใช้ Objects.equals

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<String> isJava = Predicate.isEqual("java");
        System.out.println(isJava.test("java"));
        System.out.println(isJava.test("python"));
    }
}

การเชื่อมต่อเงื่อนไขหลายรายการ

คุณสามารถเชื่อมต่อ and, or และ negate เพื่อเขียนกฎที่ซับซ้อนได้ ใช้วงเล็บเพื่อควบคุมการจัดกลุ่ม

import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<Integer> big = n -> n > 100;
        Predicate<Integer> even = n -> n % 2 == 0;
        Predicate<Integer> rule = big.and(even).or(n -> n == 0);
        System.out.println(rule.test(0));
        System.out.println(rule.test(102));
        System.out.println(rule.test(101));
    }
}

BiPredicate สำหรับข้อมูลเข้าสองรายการ

BiPredicate<T, U> ทดสอบอาร์กิวเมนต์สองรายการ และยังรองรับ and, or และ negate ด้วย

import java.util.function.BiPredicate;

public class Main {
    public static void main(String[] args) {
        BiPredicate<String, Integer> hasLength = (s, n) -> s.length() == n;
        System.out.println(hasLength.test("hello", 5));
    }
}

เพรดิเคตใน anyMatch

การดำเนินการปลายทางของสตรีม เช่น anyMatch, allMatch และ noneMatch ล้วนรับ Predicate

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> nums = List.of(1, 3, 5, 8);
        System.out.println(nums.stream().anyMatch(n -> n % 2 == 0));
        System.out.println(nums.stream().allMatch(n -> n > 0));
    }
}

ค่าคงที่ Predicate ที่นำกลับมาใช้ได้

การกำหนดเพรดิเคตเป็นตัวแปรที่มีชื่อช่วยให้สายการประมวลผลการกรองอธิบายตัวเองได้และนำกลับมาใช้ซ้ำได้

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Predicate<String> nonBlank = s -> !s.isBlank();
        List<String> input = List.of("a", " ", "", "b");
        System.out.println(input.stream().filter(nonBlank).collect(Collectors.toList()));
    }
}

ตรวจสอบอย่างรวดเร็ว

p.and(q) สร้างอะไรขึ้น

สรุปทบทวน

คุณได้ประกอบการทดสอบแบบบูลีน:

  • Predicate<T> ใช้ test เพื่อคืนค่าบูลีน
  • and, or และ negate รวมเงื่อนไขเข้าด้วยกันโดยใช้การลัดวงจร
  • Predicate.not และ Predicate.isEqual เป็นตัวช่วยแบบสแตติกที่มีประโยชน์
  • BiPredicate ทดสอบข้อมูลเข้าสองรายการ
เริ่มต้นได้ฟรี

เรียนรู้ Java ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
104
บทเรียน
374

คำถามที่พบบ่อย

บทเรียน “Predicate และการประกอบ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Predicate และการประกอบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Predicate และการประกอบ”

ประกอบการทดสอบค่าบูลีน คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “Predicate และการประกอบ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Function และ BiFunction
  2. Supplier และ Consumer
  3. Predicate และการประกอบ
  4. อินเทอร์เฟซเชิงฟังก์ชันแบบกำหนดเอง
← กลับไปที่ Java Academy