【问题标题】:Is there a better way to model a parking lot with multiple entry and exit points? [closed]有没有更好的方法来模拟具有多个入口和出口点的停车场? [关闭]
【发布时间】:2023-03-24 01:00:01
【问题描述】:
需要符合以下要求的停车场:
- 大约 30,000 个停车位。
- 多个入口和出口点(假设 4 个)
- 应为距该入口点最近的空闲时段生成票证。
我想到的方法:
为空槽维护最小堆,以便在每个条目处提供最近的槽。将存在并发问题,因此可以在所有入口点上加锁。问题是它会很慢。效率低下。
是否有其他更好、更简单的数据结构和方法来存储停车位并将其分配给即将到来的车辆以满足主要 3 要求?
【问题讨论】:
标签:
java
oop
design-patterns
hashmap
object-oriented-analysis
【解决方案1】:
您需要选择健身得分最高的免费时段。 TreeSet 看起来是一个很好的数据结构。当汽车需要一个插槽时,从集合中获取第一个条目,该类有一个方法。当汽车离开插槽时,将条目添加回集合中。您将需要与入口一样多的独立集合,每个集合都有不同的比较器。您需要从所有集合中添加/删除条目,而不仅仅是与门相关的条目。
Simplest 似乎越来越少地通过自定义 Comparator 中的适应度得分来定义。如果适应度分数相同,则通过槽号进行比较,然后0(等于)则仅针对相同的槽(槽号)。
由于电梯、入口和停车位不动,您可以提前计算健身分数。我会将预先计算的记录作为单例存储在某个数组中(如果数字是字母数字,则将其存储为记录映射的字符串),以便可以根据需要快速获取它们。