[英]Comparator Implementation
我在理解和使用比較器時遇到問題,有人問我以下問題:
創建一個CompanyDataBase類。
public java.util.ArrayList sortByName()為此,您將需要使用Comparator對象。
我已經在課堂上寫了這個方法。
@Override
public int sortByName(Employee name1, Employee name2)
{
return (int) (name1.super.getName() - name2.super.getName());
}
這個單獨的Comparator類:
導入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對象的重載使用。
任何幫助,建議,代碼行將不勝感激!
字符串不是基元,不能使用減法。
使用字符串的Comparable接口來完成這項工作
public int compare(Employee first, Employee second)
{
return first.getName().compareTo(second.getName());
}
您正在比較兩個字符串...因此(如果它們不為null),您可以這樣做:
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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.