簡體   English   中英

比較器實施

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM