2016-12-16 41 views
-2

我的任務是實現Comparable接口,並使用compareTo和compareToIgnoreCase方法根據其電子郵件字符串對Customer對象數組進行排序。這是我的構造方法的簽名,在排序字符串數組中使用compareToIgnoreCase()方法

public Customer(String email, String firstName, String lastName) 

這是我的方法,

public int compareTo(String email) { 
    return this.email.compareToIgnoreCase(email); 
    } 

我的理解應該返回1,-1,或0基於第一個字符串是否是更大的,小於或等於第二個字符串。

現在我不知道我應該如何使用此方法排序我的數組。 Arrays.sort(客戶)不做任何事情。

在此先感謝您提供的任何幫助。

+3

你的'compareTo'應該接受'Customer',而不是'String'。 –

+0

將「實現可比較的」添加到您的「客戶」類中。 – Andreas

+0

使用帶有第二個參數的Arrays.sort(...)方法,該參數是ignore-case版本的比較器。 –

回答

1

您希望能夠對客戶集合進行排序,但是您的compareTo將客戶與電子郵件進行比較。如果改成這樣,排序功能應能正常工作:

@Override 
public int compareTo(Customer cust) { 
    return this.email.compareToIgnoreCase(cust.email); 
} 

還要確保你實現你的Customer類聲明的接口Comparable<Customer>

+1

我推薦'@ Override',因爲你的最後一句話應該*強制*。 –

+0

工作正常!compareTo()在我之前不會接受Customer對象 –