У меня было переопределенное равное для класса объекта, так что каждый раз, когда повторялся дубликат при добавлении объектов этого класса в список массивов, всплывало диалоговое окно. Но это всплывает с списком remove() для массива. Есть ли способ сделать это условным, основанным на том, какой метод использует равные? Как два разных равенства, или, может быть, использовать другой метод списка массивов, который позволяет вам указать, что равно использовать?Переопределение равных только для одного метода
Редактировать: Извините, что с моим вопросом очень неясно. Вот мои переопределенные равенства и методы 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 для удаления дубликатов автоматически.
Показанный код - лучший способ отследить ошибки –
@ Хемлата вы прочитали полный вопрос? –
Если вы хотите избежать использования дубликатов, используйте set. Метод equals не используется при добавлении элементов в список, поэтому переопределение его не имеет смысла, причина remove() отображает диалоговое окно, потому что remove() использует метод equals для сравнения, когда используется метод remove (object). – pkoli