Sesuai Java Doc Of allMatch ():
Mengembalikan apakah semua elemen aliran ini cocok dengan predikat yang disediakan. Mungkin tidak mengevaluasi predikat pada semua elemen jika tidak perlu untuk menentukan hasilnya. Jika aliran kosong maka {@code true} dikembalikan dan predikat tidak dievaluasi.
@apiNote
Metode ini mengevaluasi kuantifikasi universal dari predikat atas elemen-elemen aliran (untuk semua x P (x)). Jika aliran kosong, kuantifikasi dikatakan puas kosong dan selalu {@code true} (terlepas dari P (x)).
predikat untuk diterapkan ke elemen aliran ini @ return {@code true} jika semua elemen aliran cocok dengan predikat yang disediakan atau aliran kosong, jika tidak {@code false}
Dalam kasus Anda:
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
Tidak ada evaluasi lebih lanjut yang akan dilakukan, karena 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);
Output adalah:
Fred
Finda
Fish
Result true
Di sini aliran diproses sepenuhnya karena xP (x) = true dari setiap elemen