Java8 Stream.filter не работает для отложенной загрузки данных - PullRequest
0 голосов
/ 15 октября 2018

Вот мой код:

final ArrayList<DcpDealerQuotaModel> dealerQuotas = (ArrayList)getSearchResults(actionEvent);
        Map<PointOfServiceModel,List<DcpDealerQuotaModel>> dealerQuotaMap = 
dealerQuotas.stream().filter(item->(item.getDealer() == null || item.getDealer().getName().isEmpty())).collect(Collectors.groupingBy(DcpDealerQuotaModel::getDealer));

Когда я выполняю отладку для просмотра данных в списке дилера Quotas, он показывает, что его размер равен 8, и атрибут дилера каждой модели DcpDealerQuotaModel не равен нулю, но дилерзагружается только при выполнении метода getter.Когда я вызываю ДилерQuotas.stream (). filter (item -> (item.getDealer () == null || item.getDealer (). getName (). isEmpty ())), он отфильтрует все ДилерQuotas и вернет ноль.почему?

1 Ответ

0 голосов
/ 15 октября 2018

Это потому, что ваш предикат фильтра отфильтровывает всех ненулевых дилеров и сохраняет только null дилеров.Поскольку в вашем stream таких дилеров нет, вы получите пустой результат.Измените это так,

.filter(item->item.getDealer() != null &&   !item.getDealer().getName().isEmpty())
...