【发布时间】:2019-09-02 22:58:19
【问题描述】:
您好,我正在使用 Spring Boot Java 应用程序,并且正在使用 Eclipse。我正在使用 java 流,并且在我的一个 lambda 函数上放置了一个断点。 例如在下面的代码中,我在行上放了一个断点 System.out.println("过滤请求开始日期" + filterRequest.getRangeStartDate());但它没有打到这里。知道我该怎么做吗?
@Override
public List<DropdownDTO> findAll(MessageHistoryCampaignFilterRequest filter) {
List<Campaign> campaigns = campaignRepository.findAll();
List<Campaign> filteredResults = campaigns.stream()
.filter(getFilterPredicate(filter))
.collect(Collectors.toCollection(LinkedList::new));
return filteredResults.stream()
.sorted(Comparator.comparing(Campaign::getStartDate))
.map(campaignMapper::toDropdownDTO)
.collect(toList());
}
protected Predicate<Campaign> getFilterPredicate(MessageHistoryCampaignFilterRequest filterRequest) {
Predicate<Campaign> predicate = campaign -> true;
if(filterRequest.getAccountIds() != null && !filterRequest.getAccountIds().isEmpty()) {
predicate.and( campaign -> filterRequest.getAccountIds().contains(campaign.getAccount()) );
}
if(filterRequest.getCampaignStatuses() != null && !filterRequest.getCampaignStatuses().isEmpty()) {
predicate.and( campaign -> filterRequest.getCampaignStatuses().contains(campaign.getStatus()) );
}
predicate.and( campaign ->
{
System.out.println("filter request start date" + filterRequest.getRangeStartDate());
System.out.println("filter request end date" + filterRequest.getRangeEndDate());
System.out.println( campaign.getStartDate().isAfter(filterRequest.getRangeStartDate()) && campaign.getStartDate().isBefore(filterRequest.getRangeEndDate()) );
System.out.println( campaign.getEndDate().isAfter(filterRequest.getRangeStartDate()) && campaign.getEndDate().isBefore(filterRequest.getRangeEndDate()) );
return ( campaign.getStartDate().isAfter(filterRequest.getRangeStartDate()) && campaign.getStartDate().isBefore(filterRequest.getRangeEndDate())) ||
( campaign.getEndDate().isAfter(filterRequest.getRangeStartDate())&& campaign.getEndDate().isBefore(filterRequest.getRangeEndDate()));
}
);
return predicate;
}
感谢任何帮助 谢谢
【问题讨论】:
-
您忽略了
predicate.and(…)的结果,但使用了原始predicate。连续三次。 -
是的,这是正确的答案。如果您发布它,我可以接受您的回答。谢谢