Вы можете использовать flatMap
для поиска в списке.Я лично считаю, что List
должно никогда быть null
, вместо этого это должен быть пустой список.Если это гарантия, тогда код может быть таким:
boolean hasError = message.getItems().stream()
.flatMap(t -> t.getErrors().stream())
.findAny()
.isPresent();
return (hasError ? "success" : "failure");
В противном случае код становится немного длиннее:
boolean hasError = Optional.ofNullable(message.getItems()).orElse(List.of()).stream()
.flatMap(t -> Optional.ofNullable(t.getErrors()).orElse(List.of()).stream())
.findAny()
.isPresent();
return (hasError ? "success" : "failure");
Обратите внимание, что я мог бы также использовать .count() > 0
.findAny().isPresent()
.Но недостаток первого состоит в том, что он повторяется по всем ошибкам, а последний - при коротком замыкании, если обнаружена какая-либо ошибка.