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
MPEGJPEG
B.
DOC MPEG MPEGJPEG
MPEGMPEGJPEG
MPEGMPEGJPEG
C
MPEGJPEG
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方法來取得字串物件。