有没有更好的方法来模拟具有多个入口和出口点的停车场?

问题描述

需要有以下要求的停车场:

  1. 大约 3 万个停车位。
  2. 多个入口和出口点(假设有 4 个)
  3. 应为离该入口点最近的空闲时段生成票证。

我想到的方法

维护空槽的最小堆,以在每个条目上提供最近的槽。将存在并发问题,因此可以在所有入口点上加锁。问题是它会很慢。且效率低下。

是否有其他更好、更简单的数据结构和方法来存储停车位并将它们分配给即将到来的主要 3 个要求的车辆?

解决方法

您需要选择健身得分最高的空闲时段。 TreeSet 看起来是一个很好的数据结构。当汽车需要一个插槽时,从集合中取出第一个条目,该类有一个方法。当汽车离开插槽时,将条目添加回集合。您将需要与入口一样多的独立集合,每个集合都有不同的比较器。您需要从所有集合中添加/删除条目,而不仅仅是与门相关的条目。

Simplest 似乎通过自定义 Comparator 中的适应度分数来定义越来越少。如果适应度分数相同,则按槽号进行比较,然后0(等于)则只针对同一个槽(槽号)。

由于升降机、入口和停车位不会移动,您可以提前计算适合度分数。我会将预先计算的记录作为单例存储在某个数组中(如果数字是字母数字,则将其存储为记录映射的字符串),以便可以根据需要快速获取它们。