比较器实现
问题描述:
我在理解和使用比较器时遇到问题我被问到以下问题:比较器实现
创建一个CompanyDataBase类。
public java.util.ArrayList sortByName()您需要为此使用Comparator对象。
我在班上写了这个方法。
@Override
public int sortByName(Employee name1, Employee name2)
{
return (int) (name1.super.getName() - name2.super.getName());
}
而这种单独的比较等级:
进口的java.util。*;
public class EmployeeNameComparator implements Comparator<Employee>
{
public int compare(Employee first, Employee second)
{
return (int) (first.super.getName() - second.super.getName());
}
}
但我显然不会是使用相同的 “回报(INT)(name1.super.getName() - name2.super.getName());”这两个类的代码行......但我不知道如何在sortByName方法中实现它。
我在一个单独的Employee类中使用compareTo Comparator接口来调用Comparator对象的重载使用。
任何帮助,建议,代码行将非常感谢!
答
字符串不是原语,不能使用减法。
使用字符串的可比界面做了这个工作
public int compare(Employee first, Employee second)
{
return first.getName().compareTo(second.getName());
}
答
你比较两个字符串...所以你可以(如果它们不为空),这样做:
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
}
}
+0
谢谢..我会用我的比较器的这个方法来覆盖所有的基础..并在学习练习中尝试完全理解代码的实现(全新的东西继承,多态性,接口等。痛苦的学习经历!!) – Mark 2014-11-22 16:46:53
感谢您的回应。你的意思是我在比较器中的方法应该如下所示:'public int compare(Employee first,Employee second) { return first.super.getName()。compareTo(second.super.getName()); - }' – Mark 2014-11-22 16:32:05
是的,这是正确的 – MeBigFatGuy 2014-11-22 16:33:27
谢谢,感谢! :) – Mark 2014-11-22 16:35:47