Given:
public class Emp {
String fName;
String lName;
public Emp(String fn, String ln) {
fName = fn;
lName = ln;
}
public String getfName() {
return fName;
}
public String getlName() {
return lName;
}
}
and the code fragment:
List<Emp> emp = Arrays.asList(
new Emp("John", "Smith"),
new Emp("Peter", "Sam"),
new Emp("Thomas", "Wale"));
emp.stream()
//line n1
.collect(Collectors.toList());
Which code fragment, when inserted at line n1, sorts the employees list in descending order of fName and then ascending order of lName?
A.
.sorted(Comparator.comparing(Emp::getfName).reversed().thenComparing(Emp::getlName))
B.
.sorted(Comparator.comparing(Emp::getfName).thenComparing(Emp::getlName))
C.
.map(Emp::getfName).sorted(Comparator.reverseOrder())
D.
.map(Emp::getfName).sorted(Comparator.reserveOrder().map(Emp::getlName).reserved
題解
選項A,正確答案。
選項B,fName和lName都是遞增排序,不合題目要求。
選項C,用map方法會替換掉原本的元素,所以會只剩下遞減排序的fName。
選項D,編譯錯誤,串流在經過第一次map方法之後,其元素就是字串物件而不是Emp物件了。