我在理解和使用比较器时遇到问题我被问到以下问题:
创建一个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对象的重载使用。
任何帮助,建议和代码行都会非常感激!!
答案 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
}
}