is it possible to group by the last 15 days using Java's Collectors.groupingBy
?
Input:
public class Tweet {
String id;
LocalDate createdAt;
// Constructor Ignored
List<Tweet> tweets = new ArrayList(){{
add(new Tweet("1", "2021-11-17"));
add(new Tweet("2", "2021-11-16"));
add(new Tweet("3", "2021-11-14"));
add(new Tweet("4", "2021-11-13"));
add(new Tweet("5", "2021-11-12"));
add(new Tweet("7", "2021-10-09"));
add(new Tweet("8", "2021-10-08"));
add(new Tweet("9", "2021-10-07"));
add(new Tweet("10", "2021-09-02"));
add(new Tweet("11", "2021-09-01"));
...
}};
}
Expected Output:
2021-11-17: (group must include 2021-11-17 + 15 days before 17th)
Tweet("1", "2021-11-17");
Tweet("2", "2021-11-16");
Tweet("3", "2021-11-14");
Tweet("4", "2021-11-13");
Tweet("5", "2021-11-12");
2021-10-09: (group to include 2021-10-09 + 15 days before 9th)
Tweet("7", "2021-10-09");
Tweet("8", "2021-10-08");
Tweet("9", "2021-10-07");
2021-09-01: (group to include 2021-09-01 + 15 days before 1st)
Tweet("10", "2021-09-02");
Tweet("11", "2021-09-01");
Current logic (Not working):
Main Method:
TemporalAdjusters adjuster = TemporalAdjusters.ofDateAdjuster(d -> d.minusDays(15));
Map<LocalDate, List<Tweets>> groupByLast15Days = tweets.stream()
.collect(Collectors.groupingBy(item -> item.createdAt())
.with(adjuster)));
System.out.println(groupByLast15Days); // provides incorrect results
any help is massively appreciated! Thanks!