Java 8 流:从一个列表中查找与基于另一个列表中的值计算的条件匹配的项目
2022-09-02 13:34:51
有两个类和两个对应的列表:
class Click {
long campaignId;
Date date;
}
class Campaign {
long campaignId;
Date start;
Date end;
String type;
}
List<Click> clicks = ..;
List<Campaign> campaigns = ..;
并希望找到所有 s 在那:Click
clicks
有一个对应的 in 列表,即具有相同的 AND
Campaign
campaigns
Campaign
campaignId
这已经= “预期”和
Campaign
type
这
Campaigns.start
<click.date
<Campaigns.end
到目前为止,我有以下实现(这对我来说似乎令人困惑和复杂):
clicks.
stream().
filter(click -> campaigns.stream().anyMatch(
campaign -> campaign.getCampaignType().equals("prospecting") &&
campaign.getCampaignId().equals(click.getCampaignId()) &&
campaign.getStart().after(click.getDate()) &&
campaign.getEnd().before(click.getDate()))).
collect(toList());
我想知道是否有更简单的解决方案来解决这个问题。