Given the code fragment:



List<String> codes = Arrays.asList("DOC", "MPEG", "JPEG");
codes.forEach(c -> System.out.print(c + " "));
String fmt = codes.stream()
        .filter(s -> s.contains("PEG"))
        .reduce((s, t) -> s + t).get();
System.out.println("\n" + fmt);

What is the result?

A.

DOC MPEG JPEG
MPEGJPEG

B.

DOC MPEG MPEGJPEG
MPEGMPEGJPEG

C

MPEGJPEG
MPEGJPEG

D. The order of the output is unpredictable.

題解

程式第6行,用Collection物件的forEach方法來走訪所有集合的元素,輸出「DOC MPEG JPEG 」。

程式第8行,使用串流物件的filter方法,只保留串流物件中包含「PEG」子字串的字串元素,所以只剩下「MPEG」和「JPEG」。

程式第9行,使用串流物件的reduce方法,可以將串列的所有元素縮減成一個元素,在這裡縮減的方式為直接串接字串,會串接成「MPEGJPEG」。最後使用get方法來取得字串物件。