Java数组随机存储对象
数组表示停车场中的空闲座位。现在,汽车(线程)在随机时间停车,然后离开
我如何知道哪些插槽是免费的?我是否每次都必须迭代数组才能找到一个空闲插槽,还是有更好的解决方案?是否可以创建第二个数组并仅在其中存储空闲标记
我应该使用与数组不同的数据结构吗
你可以在下面搜索框中键入要查询的问题!
数组表示停车场中的空闲座位。现在,汽车(线程)在随机时间停车,然后离开
我如何知道哪些插槽是免费的?我是否每次都必须迭代数组才能找到一个空闲插槽,还是有更好的解决方案?是否可以创建第二个数组并仅在其中存储空闲标记
我应该使用与数组不同的数据结构吗
# 1 楼答案
您不必无休止地遍历数组来检查空闲插槽
让汽车在离开车位时通知你它的索引。当汽车即将进入时,请阅读阵列中的空闲插槽。输入后,标记索引
您可能有一个实现Runnable的Car对象:
通知可以使用Observer模式实现,您可以在其中维护一个汽车列表。当汽车离开时,通知观察者
# 2 楼答案
有许多不同的停车实施方法,它们在生动性和公平性方面可能有所不同。但是为了存放免费停车位,一定要排队。就java而言,如果您使用阻塞队列,您的折衷是公平性优于活动性,因为底层算法使用锁。对于非阻塞队列,折衷的方法是活跃度优于公平性,因为底层算法使用CAS而不是锁
我认为从停车场开始,根据最近的空闲位置将车按顺序停放是合理的。所以可以使用PriorityQueue(底层数据结构是min heap)。CopyOnWriteArrayList用作线程安全数组
# 3 楼答案
一个parkingNumber和Accounted(boolean)的ParkingSpace类,然后是一个
List<ParkingSpace>
最好让停车场告诉你停车场已被占用