ตามเอกสารของ Java AllMatch ():
ส่งคืนว่าองค์ประกอบทั้งหมดของสตรีมนี้ตรงกับภาคแสดงหรือไม่ อาจไม่ประเมินเพรดิเคตสำหรับองค์ประกอบทั้งหมดหากไม่จำเป็นสำหรับการพิจารณาผลลัพธ์ หากสตรีมนั้นว่างแล้ว {@code true} จะถูกส่งคืนและเพรดิเคตจะไม่ถูกประเมิน
@apiNote
วิธีการนี้ประเมินผลเชิงปริมาณสากลของเพรดิเคตเหนือองค์ประกอบของสตรีม (สำหรับ x ทั้งหมด (x) หากสตรีมว่างเปล่าการบอกปริมาณจะได้รับการตอบสนองที่ว่างและ {@ รหัส true} เสมอ (โดยไม่คำนึงถึง P (x))
เพรดิเคตเพื่อใช้กับองค์ประกอบของสตรีมนี้ @return {@code true} หากองค์ประกอบทั้งหมดของสตรีมตรงกับเพรดิเคตที่ระบุหรือสตรีมนั้นว่างเปล่ามิฉะนั้น {@code false}
ในกรณีของคุณ:
1-
p(x) : s -> s.startsWith("F")
X : "Fred"
result : X P(X) = true
2-
p(x) : s -> s.startsWith("F")
X : "Jim"
result : X P(X) = false
จะไม่มีการประเมินผลเพิ่มเติมเนื่องจาก XP (X) = false
boolean result = Arrays.asList("Fred", "Finda", "Fish")
.stream()
.peek(System.out::println)
.allMatch(s -> s.startsWith("F"));
System.out.println("Result "+result);
ผลลัพธ์คือ:
Fred
Finda
Fish
Result true
สตรีมที่นี่ประมวลผลอย่างสมบูรณ์เนื่องจาก xP (x) = true จากแต่ละองค์ประกอบ