Java SE 8 Programmer II — Question 204
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());
fName and then ascending order of lName?
Which code fragment, when inserted at line n1, sorts the employees list in descending order of
Answer options
- A. .sorted (Comparator.comparing(Emp::getfName).reserved().thenComparing(Emp::getlName))
- B. .sorted (Comparator.comparing(Emp::getfName).thenComparing(Emp::getlName))
- C. .map(Emp::getfName).sorted(Comparator.reserveOrder())
- D. .map(Emp::getfName).sorted(Comparator.reserveOrder().map(Emp::getlName).reserved
Correct answer: A
Explanation
The correct answer, A, uses `Comparator.comparing` with `reserved()` to sort fName in descending order and then uses `thenComparing` to sort lName in ascending order. Option B sorts fName in ascending order, which is incorrect. Options C and D focus on mapping and sorting fName only, neglecting the necessary sorting for lName.