Given the code fragments:
class TechName {
String techName;
TechName(String techName) {
this.techName = techName;
}
}
and
List<TechName> tech = Arrays.asList(
new TechName("Java-"),
new TechName("Oracle DB-"),
new TechName("J2EE-")
);
Stream<TechName> stre = tech.stream();
//line n1
Which should be inserted at line n1 to print Java-Oracle DB-J2EE-?
A.
stre.forEach(System.out::print);
B.
stre.map(a -> a.techName).forEach(System.out::print);
C.
stre.map(a -> a).forEachOrdered(System.out::print);
D.
stre.forEachOrdered(System.out::print);
題解
選項A,由於TechName類別沒有覆寫toString方法,因此無法直接輸出techName欄位的值,而是輸出最上層Object類別的toString方法所產生出來的字串。
選項B,利用Stream物件的map方法去替換Stream物件的元素為TechName物件的techName欄位值,之後再使用forEach方法將techName欄位值輸出,可得到題目要的輸出結果。
選項C,無法直接輸出techName欄位的值,理由同選項A。可以改成以下程式,即可得到正確結果:
stre.map(a -> a.techName).forEachOrdered(System.out::print);
選項D,無法直接輸出techName欄位的值,理由同選項A。