【问题标题】:Store overlapping dates from ArrayList存储来自 ArrayList 的重叠日期
【发布时间】:2015-06-06 15:00:45
【问题描述】:

我在比较日期时遇到问题。

我正在开发一个停车场应用程序,有 X 个可用位置,我在 sql 中存储了开始日期和结束日期(预订停车位)。我的想法是从 ArrayList 中检查是否有超过 x 的重叠天数。

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 循环来比较每个日期与所有其他日期等所做的,但这就是我卡住的地方。我可以以某种方式存储重叠的日期吗?

【问题讨论】:

    标签: java date arraylist


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多