#java #spring
#java #spring
Вопрос:
Я пытаюсь создать функцию для проверки, находится ли объект внутри списка объектов, но у меня проблема, потому что я использую класс для определения свойств ожидающего объекта, поэтому в IDE, похоже, помогает решить проблему, но я не хочумоя идея заключается в том, чтобы сделать функцию глобальной для проверки любого типа списка, так что это мой код, извините, если не подходит, но это попытка.
* Список и объект имеют один и тот же класс.
objExist(statusClaim, statusClaimRP) /*<=== Is just the function on my code for reference */
private Boolean objExist(List<Object> arreglo, Object objeto) throws JSONException {
Integer valida = 0;
for(Integer i = 0; i < arreglo.size(); i ) {
if(arreglo.get(i) == objeto) {
valida ;
}
}
if(valida > 0) {
return false;
} else {
return true;
}
}
Метод objExist(List'<‘Object’>’, Object) в типе ClaimService не применим для аргументов (List'<‘StatusClaimDTO’>’, StatusClaimDTO).
Ответ №1:
Как я понял, вы хотите убедиться, что определенный список содержит определенный объект? Если это так, вы можете использовать list.contains(objectToFind)
потоки или:
listOfSomeObjects.stream().anyMatch(obj -> obj.equals(objectToFind);
Альтернативно, в целях обучения вы можете просто перебрать список в цикле for и обернуть его в универсальный метод:
private <T> boolean listContainsElement(List<T> list, T elementToFind) {
for (T element: list) {
if (element.equals(elementToFind)) {
return true;
}
}
return false;
}
Но это непрактично.
Примечание: ==
сравнивает ссылки, а не сами объекты, что означает, что если obj1 == obj2, что обе переменные указывают на один и тот же экземпляр объекта, если это то, что вы хотите, тогда ок. Но обычно объекты сравниваются с equals
методом, который вы можете переопределить и использовать свою собственную логику, в противном случае он имеет реализацию по умолчанию, которая в основном действует как ==
operator .
Комментарии:
1. Спасибо за ответ, мой единственный вопрос заключается в том, использует ли «anyMatch», если он ищет какое-либо совпадение в массиве или ищет, чтобы весь объект, который ему передается, был равен другому объекту в списке.
2. Я отредактировал свой ответ с помощью еще нескольких примеров. anyMatch в основном возвращает true, если какой-либо из объектов в вашем списке равен тому, который вы передаете в качестве аргумента. Он использует метод equals объекта, реализация которого зависит от типа объекта.