Given the code fragment:



List<String> colors = Arrays.asList("red", "green", "yellow");
Predicate<String> test = n -> {
    System.out.println("Searching...");
    return n.contains("red");
};
colors.stream()
        .filter(c -> c.length() > 3)
        .allMatch(test);

What is the result?

A.

Searching...

B.

Searching...
Searching...

C.

Searching...
Searching...
Searching...

D. A compilation error occurs.

題解

程式第12行的filter方法只會保留包含字串長度大於3的字串元素。只有「green」和「yellow」符合條件。

程式第13行利用allMatch方法來判斷串流中的字串元素是否都包含「red」子字串,若找到一個不符合條件的字串元素,就會立即回傳false。因此在這個題目中,只會輸出一次「Searching...」。