Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取日期间隔为键的地图时出现问题_Java_Date_Hashmap - Fatal编程技术网

Java 获取日期间隔为键的地图时出现问题

Java 获取日期间隔为键的地图时出现问题,java,date,hashmap,Java,Date,Hashmap,我有一张气球的清单。气球具有日期创建和颜色字段。 我有两个日期,分别是用户选择的dateStart和dateEnd 我需要有一个地图,其中的关键是dateStart和dateEnf之间的所有日期,其中的值取决于气球的日期 例如: 如果用户日期为:2019-01-01和2019-01-05 如果我有4个气球b1: b1.dateCreation=2019-01-01 b2.dateCreation=2019-01-02 b3.dateCreation=2019-01-04 b4.dateCrea

我有一张气球的清单。气球具有日期创建和颜色字段。 我有两个日期,分别是用户选择的dateStart和dateEnd

我需要有一个地图,其中的关键是dateStart和dateEnf之间的所有日期,其中的值取决于气球的日期

例如:

  • 如果用户日期为:
    2019-01-012019-01-05
  • 如果我有4个气球b1:
    b1.dateCreation=2019-01-01
    b2.dateCreation=2019-01-02
    b3.dateCreation=2019-01-04
    b4.dateCreation=2019-01-04

我想要这张地图





目前我有这个方法

public Map<Date, Ballon[]> getMapOfBallonByDate(Date dateStart, Date dateEnd) {
        List<Ballon> allBallonInTheDateInterval = ticketRepository.findTicketByDate(dateStart, dateEnd);
        ...
        return ...
}
公共地图getMapOfBallonByDate(日期开始日期结束日期){
列出AllBallontheDateInterval=TicketPository.findTicketByDate(日期开始,日期结束);
...
返回。。。
}
我不知道在函数体中写什么。提前感谢您的帮助。

Map allballodinateinterval=ticketpository.findTicketByDate(dateStart,dateEnd)
Map<Date, List<Balloon>> allBalloonInTheDateInterval = ticketRepository.findTicketByDate(dateStart, dateEnd)
.stream()
.collect(groupingBy(Balloon::getDateCreation));
.stream() .collect(groupingBy(Balloon::getDateCreation));
创建一个新映射
map balloodmap=newhashmap()

然后您可以在日期范围内进行迭代。参考:

在每次迭代中

Balloon[] currentBalloons = allBalloonInTheDateInterval1.getOrDefault(currentIterationDate, new ArrayList<>()).toArray(new Balloon[0]);
balloonMap.put(currentIterationDate, currentBalloons);
Balloon[]currentbloods=AllBalloodInDateInterval1.getOrDefault(currentIterationDate,new ArrayList()).toArray(new Balloon[0]);
BalloodMap.put(currentIterationDate,CurrentBalloods);

很好的建议。只是我建议您不要使用
Date
。那门课设计得很糟糕,而且早已过时。改为使用中的
LocalDate
from。这也使得迭代更加简单。谢谢你的回答!你能解释一下我的这行气球是什么吗::getDateCreation,因为我不明白getDateCreation如何返回日期。当我创建AllBalloon的DateInterval时,我如何处理检索到的气球日期,它只包含天、月和年。因为我认为时间和秒对其他人来说是个问题。我想我需要这样做,因为当我执行这一行时,
Balloon[]currentbloods=allballootInDateInterval1.getOrDefault(currentIterationDate,new ArrayList()).toArray(new Balloon[0])我在地图上没有气球,正如上面的评论所建议的,如果不需要时间,你能使用LocalDate吗?是的,我可以使用它。但是我不知道该怎么办