है दो वर्गों और दो संगत सूचियां:जावा 8 धाराओं: एक सूची है कि एक और सूची से मूल्यों के आधार पर गणना की स्थिति से मेल से आइटम खोजने के
class Click {
long campaignId;
Date date;
}
class Campaign {
long campaignId;
Date start;
Date end;
String type;
}
List<Click> clicks = ..;
List<Campaign> campaigns = ..;
और clicks
कि सभी Click
रों लगाना चाहते हैं:
एक इसी
Campaign
campaigns
में सूची, यानी, एक हीcampaignId
और साथ
यह
Campaign
type
है = "भावी" औरयह
Campaigns.start
<click.date
<Campaigns.end
Campaign
है
अब तक मेरे पास है निम्नलिखित कार्यान्वयन (जो मेरे लिए भ्रामक और जटिल लगता है):
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());
मुझे आश्चर्य है कि समस्या के लिए सरल समाधान है या नहीं।
प्रयास करें। –
@ जोएसी क्या यह वास्तव में संभव है? यह लैम्ब्डा दोनों क्लिक और अभियान को संदर्भित करता है जिसका अर्थ है कि फ़िल्टर को स्वीकार करते समय मुझे बायप्र्रेडिकेट का उपयोग करने की आवश्यकता होगी –
'क्लिक करें -> चेक कैंपेन (क्लिक, अभियान) ' –