Predicate และการประกอบ
ประกอบการทดสอบค่าบูลีน
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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Function และ BiFunction
- Supplier และ Consumer
- Predicate และการประกอบ
- อินเทอร์เฟซเชิงฟังก์ชันแบบกำหนดเอง