比较器实现

时间:2014-11-22 16:20:48

标签: java comparator

我在理解和使用比较器时遇到问题我被问到以下问题:

创建一个CompanyDataBase类。

public java.util.ArrayList sortByName()您需要使用Comparator对象。

我在课堂上写过这个方法。

     @Override
   public int sortByName(Employee name1, Employee name2)
   {
      return (int) (name1.super.getName() - name2.super.getName());   
   }

这个单独的Comparator类:

import java.util。*;

public class EmployeeNameComparator implements Comparator<Employee> 
{


   public int compare(Employee first, Employee second)
   {
      return (int) (first.super.getName() - second.super.getName());
   }

}

但我显然不会使用相同的“return(int)(name1.super.getName() - name2.super.getName());”两个类中的代码行...但我不知道如何在sortByName方法中实现它。

我在一个单独的Employee类中使用compareTo Comparator接口来调用Comparator对象的重载使用。

任何帮助,建议和代码行都会非常感激!!

2 个答案:

答案 0 :(得分:2)

字符串不是原语,不能使用减法。

使用字符串的Comparable接口来完成这项工作

public int compare(Employee first, Employee second)
{
    return first.getName().compareTo(second.getName());
}

答案 1 :(得分:0)

您正在比较两个字符串...所以您可以(如果它们不为空)执行此操作:

name1.compareTo(name2);

现在你需要考虑空值...所以你的比较器看起来像这样:

public class EmployeeNameComparator implements Comparator<Employee> 
{
   public int compare(Employee first, Employee second)
   {
      if (first != null && second != null) {
           if (first.getName() != null) {
               return first.getName().compareTo(second.getName());
           }
      }
.. other cases here


   }
}