我已經重寫了一個對象類的等號,以便每次向數組列表中添加該類的對象時發生重複,都會彈出一個對話框。但是這會彈出remove()for數組列表。有沒有一種方法可以根據哪種方法使用equals來使這個條件成立?像兩個不同的等號,或者可能使用另一個數組列表方法,可以讓你指定哪個等於使用?覆蓋等於只有一個方法
編輯: 抱歉,我的問題很不清楚。 這裏是我重寫的equals和hashCode方法:
@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的自動刪除重複。
顯示你的代碼是追蹤錯誤的最佳方法 –
@Hemlata你看過完整的問題嗎? –
如果你想避免重複使用set。在列表中添加元素時不使用equals方法,因此覆蓋它沒有用處,remove()顯示對話框的原因是因爲remove()使用equals方法進行比較,因此使用remove(object)方法時。 – pkoli