Эффективный способ использовать l oop через список в Java - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть функция logi c, которая не сможет выполнить процесс, если есть цены dtos, которые имеют нулевой элемент и свойства текущей цены.

Мне было интересно, есть ли более эффективный или более чистый способ сделать это в Java. В потоках или любой другой.

Вот мой текущий код:

List<PriceDto> priceDtoList = thisIsAClass.getPriceDtos();

 for (PriceDto priceDto: priceDtoList) {
        if (priceDto.getItem() == null && priceDto.getCurrentPrice() == null) 
         {
            thisIsAnotherClass.failTheProcess();
            break;
        }
    }

  thisIsAnotherClass.anotherProcess();

Заранее благодарю за помощь!

1 Ответ

0 голосов
/ 13 апреля 2020

Более распространенный способ в более новой версии Java - использовать findFirst или findAny.

Например,

List<PriceDto> priceDtoList = thisIsAClass.getPriceDtos();

Optional<PriceDto> result = list
            .stream()
            .filter(dto -> dto.getItem() ==null && dto.getCurrentPrice() == null)
            .findAny();


if(result.isPresent()) {
     thisIsAnotherClass.failTheProcess();
}

  thisIsAnotherClass.continueTheProcess();

Если у вас много данных в списке вы также можете посмотреть добавление вызова .parallel() в поток, чтобы улучшить общую производительность поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...