Как перебрать поток целых чисел?и в то же время во время итерации я должен проверить это на некоторые условия - PullRequest
0 голосов
/ 07 февраля 2019

Я пишу код для публикации, но у меня возникают некоторые проблемы в проверках.

getDocumentIds - это список целых чисел, и мне нужно перебрать список и проверить, является ли этот конкретный идентификатордопустимо или нет.

Я пробовал с приведенным ниже кодом, но, когда я передаю список значений, он принимает только первое значение.Он не принимает значения после первого.

    Document document=               
    Optional.ofNullable(repositoryService.findById(Document.class,               
    memberNoteResource.getDocumentIds().stream()
    .iterator().next())).orElse(null);

    if (document == null) {
        throw new ApiException(ApiErrorCode.DEFAULT_400,
                "Save unsuccessful document id is not part of member note");
    }

Ожидаемый результат: я должен проверить все переданные «getDocumentIds», и если какой-то идентификатор отсутствует, то я должен выдать ошибку

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

getDocumentIds - это список целых чисел, и мне нужно , чтобы перебрать список и проверить, является ли этот конкретный идентификатор действительным или нет.

Вы можете использовать anyMatch для проверки, если для любого из id нет документа (предполагается, что возвращаемое значение null).

if(memberNoteResource.getDocumentIds()
       .stream()
       .anyMatch((id)-> repositoryService.findById(Document.class,id) == null)) {
    throw new ApiException(ApiErrorCode.DEFAULT_400, 
             "Save unsuccessful document id is not part of member note");
}
0 голосов
/ 07 февраля 2019

Полагаю, что вы хотели что-то вроде

    memberNoteResource.getDocumentIds().stream()
        .map((id)-> {
            repositoryService.findById(Document.class, id);
        }).map(Optional::ofNullable);

Затем вы можете добавить цепочку с помощью .filter (), чтобы сделать еще одну проверку.

...