Emp idでソートするために使用できますが、文字列を比較できるかどうかはわかりません。文字列に対して演算子が未定義であるというエラーが表示されます。
public int compareTo(Emp i) {
if (this.getName() == ((Emp ) i).getName())
return 0;
else if ((this.getName()) > ((Emp ) i).getName())
return 1;
else
return -1;
使用する必要があるのは、StringsのcompareTo()
メソッドです。
_return this.getName().compareTo(i.getName());
_
それはあなたが望むことをする必要があります。
通常、Comparable
インターフェイスを実装するときは、クラスの他のComparable
メンバーを使用した結果を集約するだけです。
以下は、compareTo()
メソッドの非常に典型的な実装です。
_class Car implements Comparable<Car> {
int year;
String make, model;
public int compareTo(Car other) {
if (!this.make.equalsIgnoreCase(other.make))
return this.make.compareTo(other.make);
if (!this.model.equalsIgnoreCase(other.model))
return this.model.compareTo(other.model);
return this.year - other.year;
}
}
_
コードは次のように記述できることを確認してください。
public int compareTo(Emp other)
{
return this.getName().compareTo(other.getName());
}
IをEmpにキャストする必要はありません。すでにEmpです。
public int compareTo(Emp i) {
return getName().compareTo(i.getName());
}
すべきではない
if (this.getName() == ((Emp ) i).getName())
なる
if (this.getName().equals(i.getName()))