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)的BuzzspecialDate映射到一起。但是,由于每个getBuzzFromFizz()都将返回带有新Buzz实例的Date,因此Dates都不会是同一实例,因此我不相信上述方法会起作用。

我需要一种表达方式:“此地图是否已经包含与当前Buzz的新String日期相同的String日期?”。有什么想法我可以做到这一点吗?

最佳答案

将键从buzz.getSpecialDate()更改为格式化的字符串日期,无需时间。这样您就可以轻松地将嘶嘶声分组。

例如密钥可以是YYYY-MM-dd格式的日期

您可以使用DateFormat相同。

10-07 20:43