オブジェクトクラスのequalsをオーバーライドしたので、そのクラスのオブジェクトを配列リストに追加するたびに重複が発生するたびにダイアログボックスがポップアップするようになりました。しかし、これは配列リストのためのremove()でポップアップします。どのメソッドがequalsを使用するかに基づいて、これを条件付きにする方法はありますか? 2つの異なるequalsのように、または使用するequalsを指定できるようにする別の配列リストメソッドを使用しますか?1つのメソッドに対してのみequalsをオーバーライドする
編集: ご迷惑をおかけして申し訳ございません。残りについては
@Override
public boolean equals(Object s) {
if(!(s instanceof Car)) {
return false;
}
Car s2 = (Car)s;
if(this.name.equals(s2.name) && this.ride.equals(s2.ride)){
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Delete Item");
alert.setHeaderText(
"Are you sure?");
alert.showAndWait();
return true;
}
return false;
}
@Override
public int hashCode(){
int hashC;
hashC = name.hashCode();
hashC *= ride.hashCode();
return hashC;
}
、私は自動的に重複を削除するためのHashSetを使用します。 はここに私のオーバーライドされたequalsメソッドおよびhashCodeメソッドです。
コードを表示すると、バグをトレースする最良の方法です。 –
@Hemlataあなたは完全な質問を読んでいますか? –
重複使用を避けたい場合は、セットを使用します。 remove()メソッドが使用されている場合、remove()は比較のためにequalsメソッドを使用するため、remove()はダイアログボックスを表示しているため、equalsメソッドはリスト内の要素を追加するときには使用されません。 – pkoli