Zgodnie z Java Doc Of allMatch ():
Zwraca, czy wszystkie elementy tego strumienia pasują do podanego predykatu. Może nie oceniać predykatu dla wszystkich elementów, jeśli nie jest to konieczne do ustalenia wyniku. Jeśli strumień jest pusty, zwracany jest {@code true}, a predykat nie jest oceniany.
@apiNote
Ta metoda ocenia uniwersalną kwantyfikację predykatu nad elementami strumienia (dla wszystkich x P (x)). Jeśli strumień jest pusty, mówi się, że kwantyfikacja jest pusta i zawsze ma wartość {@code true} (niezależnie od P (x)).
predykat ma zastosowanie do elementów tego strumienia @return {@code true}, jeśli wszystkie elementy strumienia pasują do podanego predykatu lub strumień jest pusty, w przeciwnym razie {@code false}
W Twoim przypadku:
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
Dalsza ocena nie będzie przeprowadzana, ponieważ 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);
Dane wyjściowe to:
Fred
Finda
Fish
Result true
Tutaj strumień jest przetwarzany całkowicie, ponieważ xP (x) = true z każdego elementu