存储ArrayList中的重叠日期

时间:2015-06-06 15:00:46

标签: java date arraylist

我在比较日期方面遇到了问题。

我正在开发一个停车场应用程序,有一些X可用的地方,我在sql中存储开始日期和结束日期(保留停车位)。我的想法是,如果有超过x个重叠天数的时刻,请从ArrayList中检查预约。

ArrayList<Reservering> alleReserveringen = reserveringDAO
                .getAlleReservering();
        int totaal = 0;
        for (int i = 0; i < alleReserveringen.size(); i++) {
            for (int j = 0; j < alleReserveringen.size(); j++) {
                if (alleReserveringen.get(i).getVertrek()
                        .before(alleReserveringen.get(j).getAankomst())
                        || alleReserveringen
                                .get(i)
                                .getAankomst()
                                .before(alleReserveringen.get(j)
                                        .getVertrek())) {
                //overlapping
                } else {
                //not overlapping
                }
            }
        }

这就是我用嵌套for循环来比较每个日期和所有其他日期等等。但这是我被卡住的地方。我可以在某处存储重叠日期吗?

1 个答案:

答案 0 :(得分:1)

这是Guava的RangeSet的完美用例,它有效地将范围存储为起始端对,合并重叠并提供O(log n)contains检查。

如果您尝试将起始端对映射到值,还有RangeMap。不幸的是,目前还没有RangeMultimap,但你可以轻松地创建一个包装器。