Java 8在这里,尽管我正在处理java.util.Date
,而不是LocalDate
。
我遇到一种情况,需要创建一个键为Map<?,?>
的Dates
:
Map<Date, List<Fizz>> fizzesBySpecialDate = new HashMap<>;
List<Fizz> fizzes = getFizzesSomehow();
for (Fizz fizz : fizzes) {
Buzz buzz = getBuzzFromFizz(fizz);
if (fizzesBySpecialDate.containsKey(buzz.getSpecialDate())) {
fizzesBySpecialDate.get(buzz.getSpecialDate()).add(fizz);
} else {
final List<Fizz> newGroup = new ArrayList<>();
newGroup.add(fizz);
fizzesBySpecialDate.put(buzz.getSpecialDate(), newGroup);
}
}
因此,我的意图是将所有具有相同
Fizzes
(例如7/4/2019)的Buzz
的specialDate
映射到一起。但是,由于每个getBuzzFromFizz()
都将返回带有新Buzz
实例的Date
,因此Dates
都不会是同一实例,因此我不相信上述方法会起作用。我需要一种表达方式:“此地图是否已经包含与当前
Buzz
的新String日期相同的String日期?”。有什么想法我可以做到这一点吗? 最佳答案
将键从buzz.getSpecialDate()
更改为格式化的字符串日期,无需时间。这样您就可以轻松地将嘶嘶声分组。
例如密钥可以是YYYY-MM-dd格式的日期
您可以使用DateFormat
相同。