Theo tài liệu Java của allMatch ():
Trả về việc tất cả các thành phần của luồng này có khớp với vị từ được cung cấp hay không. Có thể không đánh giá vị ngữ trên tất cả các yếu tố nếu không cần thiết để xác định kết quả. Nếu luồng trống thì {@code true} được trả về và vị từ không được ước tính.
@apiNote
Phương pháp này đánh giá định lượng phổ quát của vị từ trên các phần tử của luồng (với mọi x P (x)). Nếu luồng trống, việc định lượng được cho là thỏa mãn một cách trống rỗng và luôn luôn là {@code true} (bất kể P (x)).
biến vị ngữ để áp dụng cho các phần tử của luồng này @return {@code true} nếu tất cả các phần tử của luồng khớp với vị từ được cung cấp hoặc luồng trống, nếu không {@code false}
Trong trường hợp của bạn:
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
Không có đánh giá nào nữa sẽ diễn ra, vì 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);
Đầu ra là:
Fred
Finda
Fish
Result true
Ở đây luồng xử lý hoàn toàn vì xP (x) = true từ mỗi phần tử