Given the code fragment:



List<String> listVal = Arrays.asList("Joe", "Paul", "Alice", "Tom");
System.out.println(
    // line n1
);

Which code fragment, when inserted at line n1, enables the code to print the count of string elements whose length is greater than three?

A.

listVal.stream().filter(x -> x.length() > 3).count()
B.
listVal.stream().map(x -> x.length() > 3).count()
C.
listVal.stream().peek(x -> x.length() > 3).count().get()
D.
listVal.stream().filter(x -> x.length() > 3).mapToInt(x -> x).count()

題解

Stream物件的filter方法可以保留符合條件的元素;map和mapToInt方法可以用來替換元素;peek方法可以用來走訪所有元素。題目要求找出字串長度大於三的元素數量。

選項A,用filter方法只保留字串長度大於三的元素,所以剩下來的元素數量為2。是正確答案。

選項B,用map方法將所有元素轉為boolean,數量依然為4。

選項C,peak方法的用法不正確。

選項D,mapToInt方法的用法不正確。