Моя попытка настроить метод содержит в ArrayList, я использовал Eclipse, для создания этих методов внутри класса TaskCandidateListItemDoРеализация равных и хэш-код для ArrayList.contains() не работает
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result;
if (keyValue == null) {
result += 0;
} else {
result += keyValue.hashCode();
}
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
TaskOverrideItemDo other = (TaskOverrideItemDo) obj;
if (keyValue == null) {
if (other.keyValue != null) {
return false;
}
} else if (!keyValue.equals(other.keyValue)) {
return false;
}
return true;
}
И вот как я использую его
taskCandidateList = (List<TaskCandidateListItemDo>) namedQuery.list();
for (TaskOverrideItemDo taskOverrideItemDo : validateOverrideListSearchCriteriaDo
.getTaskOverrideItemDoList()) {
if (taskCandidateList.contains(taskOverrideItemDo.getKeyValue())) {
// do some code
}
}
Мой список объявлен как следует
private List<TaskCandidateListItemDo> taskCandidateList;
// сделать некоторый код внутри оператора if никогда не выполняется, даже если keyValue существует. Кроме того, точка разрыва Wouldnt остановить на методе Equals ..
Спасибо Andriano, попробуем это – sonx