这是我的代码:
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));
当我执行调试以查看DealerQuotas列表中的数据时,它显示其大小为8,并且每个DcpDealerQuotaModel的Dealer属性值都不为null,但是仅在执行getter方法时才加载Dealer。当我调用DealerQuotas.stream()。filter(item->(item.getDealer()== null || item.getDealer()。getName()。isEmpty()))时,它将过滤所有DealerQuotas并返回null ,为什么?
答案 0 :(得分:2)
这是因为您的过滤谓词会过滤掉所有非null的经销商,并仅保留null
个经销商。由于您的stream
中没有这样的经销商,因此您得到的结果是空的。像这样更改它,
.filter(item->item.getDealer() != null && !item.getDealer().getName().isEmpty())