2016-12-16 5 views
-2

私の割り当てでは、Comparableインターフェイスを実装し、compareToおよびcompareToIgnoreCaseメソッドを使用して電子メール文字列に従ってCustomerオブジェクトの配列を並べ替えます。これは、私はそれが最初の文字列が大きいかどうかに基づいて、1、-1、または0を返す必要があります理解し、私のコンストラクタの署名である並べ替えの際のcompareToIgnoreCase()メソッドの使用文字列

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

そして、これは私の方法、

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

あり、 2番目の文字列と同じかそれより小さいか等しい。

今、配列をソートする際にこのメソッドをどのように使用するのか分かりません。 Arrays.sort(customers)は何もしません。

ご協力いただきありがとうございます。

+3

あなたの 'compareTo'は' String'ではなく 'Customer'を受け入れるべきです。 –

+0

あなたの 'Customer'クラスに' implementable comparable 'を追加してください。 – Andreas

+0

'Arrays.sort(...)'メソッドを使用します。このメソッドは、ignore-caseバージョンの比較器である第2引数をとります。 –

答えて

1

お客様のコレクションを並べ替えることができますが、compareToは顧客とメールを比較します。あなたはこのように変更した場合は、ソート機能が正しく動作する必要があります

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

はまた、あなたがあなたの Customerクラス宣言にインターフェース Comparable<Customer>を実装することを確認します。

+1

最後の文章は* enforced *にする必要があるので、 '@ Override'をお勧めします。 –

+0

これはうまくいきました!compareTo()はCustomerオブジェクトを受け入れません。 –

関連する問題