Java8 Stream.filter不';不适用于延迟加载数据

Java8 Stream.filter不';不适用于延迟加载数据,filter,java-stream,lazy-loading,Filter,Java Stream,Lazy Loading,这是我的密码: final ArrayList<DcpDealerQuotaModel> dealerQuotas = (ArrayList)getSearchResults(actionEvent); Map<PointOfServiceModel,List<DcpDealerQuotaModel>> dealerQuotaMap = dealerQuotas.stream().filter(item->(item.getDealer

这是我的密码:

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));
final ArrayList dealerQuotas=(ArrayList)getSearchResults(actionEvent);
映射dealerQuotaMap=
dealerQuotas.stream().filter(item->(item.getDealer()==null | | item.getDealer().getName().isEmpty()).collect(collector.groupingBy(DcpDealerQuotaModel::getDealer));

当我执行debug以查看dealerQuotas列表中的数据时,它显示其大小为8,并且每个DcpDealerQuotaModel的dealer属性不为null,但只有在执行getter方法时才会加载dealer。当我调用dealerQuotas.stream().filter(item->(item.getDealer()==null | | item.getDealer().getName().isEmpty())时,它将过滤所有dealerQuotas并返回null,为什么?

这是因为您的筛选器谓词过滤掉所有非null的交易商,只保留
null
交易商。因为在你的
流中没有这样的经销商,所以你得到的结果是空的。像这样改变它

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