allMatch ()의 Java Doc에 따라 :
이 스트림의 모든 요소가 제공된 술어와 일치하는지 여부를 리턴합니다. 결과를 결정하는 데 필요하지 않은 경우 모든 요소에 대한 술어를 평가할 수 없습니다. 스트림이 비어 있으면 {@code true}가 리턴되고 술어는 평가되지 않습니다.
@apiNote
이 방법 은 스트림 요소에 대한 술어 의 범용 정량 을 평가합니다 (모든 x P (x)에 대해). 스트림이 비어있는 경우 수량화는 완전히 만족 한다고하며 항상 {@code 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이므로 스트림이 완전히 처리되었습니다.