Функция SPRING для проверки объекта, не принимающего тип данных

#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 объекта, реализация которого зависит от типа объекта.