boolean
が等しければ、これを返すクラスObjectからメソッドequals(Object)
を上書きすることができます(これらのインスタンスを等しく定義する必要がある場合は、このメソッド内で自分で定義することができます)。
ソートされたマップでクラスをソートできるようにするには、インターフェイスComparable
とメソッドint compare(Object)
を実装できます。例えば
:メガネオブジェクトは、他のメガネのオブジェクトよりも「小さい」または「大きな」の場合、私はあなたのロジックを知らないので
@Override
public int compareTo(Glasses other) {
if (equals(other)) {
return 0;
} else {
//FIXME: when is a Glasses object smaller then an other Glasses object??
return 0;
}
}
@Override
public boolean equals(Object o) {
boolean equal = false;
if (o instanceof Glasses) {
Glasses other = (Glasses) o;
equal = true;
equal &= (manufacturer == null && other.manufacturer == null) || (manufacturer != null && manufacturer.equals(other.manufacturer));
equal &= price == other.price;
equal &= (type == null && other.type == null) || (type != null && type.equals(other.type));
}
return equal;
}
compare
メソッドの実装はバグがあります。たぶんequals
メソッドが必要なのでしょうか?
追加: ザ・メソッドは少し小さいが、理解することが、多分少し難しく行うことができます等しい(あなたがの取扱いを知っていれば、実際に依存 - 演算子「を?」):
@Override
public boolean equals(Object o) {
boolean equal = false;
if (o instanceof Glasses) {
Glasses other = (Glasses) o;
equal = true;
equal &= manufacturer == null ? other.manufacturer == null : manufacturer.equals(other.manufacturer);
equal &= price == other.price;
equal &= type == null ? other.type == null : type.equals(other.type);
}
return equal;
}
あなたは彼らのために正確に何を比較したいですか? –
ああ、申し訳ありませんが、私は、メガネ1はメーカーXからのもので、価格はY、タイプZ、メガネ2が製造元Aなどであることを欲しい。 –