没有类源代码的排序

时间:2018-05-02 06:57:20

标签: java

我的一次采访中的访问员问题。

  

我们Employee课程包含idfirstNamelastName字段以及这些字段的getter和setter。我们没有这个类的源代码,它在JAR中。我们使用Employee个实例作为TreeMap中的关键字。现在,我们要根据TreeMap Employee字段对此id进行排序。

我知道我们可以使用Comparable界面进行排序,但如果我们没有源代码,我们该如何使用呢?

2 个答案:

答案 0 :(得分:0)

基于Andreas comment

由于您没有源代码,因此您无法使用可比较的界面。这是您的面试官的目标,让您使用替代方案。另一种方法是使用Comparator

我会让您搜索如何使用它(here an example

答案 1 :(得分:0)

您有两种选择:

  1. 子类Employee并具有派生类实现Comparable<...>
  2. 撰写Comparator<Employee>并将其作为参数传递给TreeMap
  3. 的构造函数

    第一个问题比它值得更麻烦,因为你正在处理另一个班级。因此,让我们看看如何使用Comparator

    final Comparator<Employee> employeeComparator = Comparator
            .comparing(Employee::getLastName)
            .thenComparing(Employee::getFirstName);
    final SortedMap<Employee, String> map = new TreeMap<>(employeeComparator);
    

    这将比较器定义为Java 8 lambda,首先比较姓氏,然后比较名字。