我的一次采访中的访问员问题。
我们
Employee
课程包含id
,firstName
和lastName
字段以及这些字段的getter和setter。我们没有这个类的源代码,它在JAR中。我们使用Employee
个实例作为TreeMap
中的关键字。现在,我们要根据TreeMap
Employee
字段对此id
进行排序。
我知道我们可以使用Comparable
界面进行排序,但如果我们没有源代码,我们该如何使用呢?
答案 0 :(得分:0)
由于您没有源代码,因此您无法使用可比较的界面。这是您的面试官的目标,让您使用替代方案。另一种方法是使用Comparator。
我会让您搜索如何使用它(here an example)
答案 1 :(得分:0)
您有两种选择:
Employee
并具有派生类实现Comparable<...>
Comparator<Employee>
并将其作为参数传递给TreeMap
第一个问题比它值得更麻烦,因为你正在处理另一个班级。因此,让我们看看如何使用Comparator
。
final Comparator<Employee> employeeComparator = Comparator
.comparing(Employee::getLastName)
.thenComparing(Employee::getFirstName);
final SortedMap<Employee, String> map = new TreeMap<>(employeeComparator);
这将比较器定义为Java 8 lambda,首先比较姓氏,然后比较名字。