我的任务是设计一个在线预订系统。用户可以在其中输入邮政编码/人数/预订时间并获取餐厅列表。假设(用户和餐厅总是在同一个城市)
每个餐厅可以有多个座位数不同的桌子。因此,2 张可容纳 4 人的桌子和 4 张可容纳 4 人的桌子。
我在想出要使用的正确数据结构时遇到了麻烦。
我的课程如下
餐厅:包含开放时间、关闭时间、总NoOfSeatsAvailable 不确定我将如何在餐厅内存储餐桌信息。为表设置一个单独的类是没有意义的。我需要的所有信息是 howManytables 是免费的,它们的大小是多少。
Reservation:这会维护实际的预订并允许取消预订
ReservationSystem : 包含到 `List checkAvailability(long time, int people)' 的接口这将如何返回这个列表?我最初考虑使用 priorityQueue 来维护一个最大可用座位数的队列。但随后我将查看该列表以查看时间是否正确,甚至可以进行预订,然后在进行预订后更新此队列。一个问题是队列做所有重复。
我的具体问题是:
- 我如何在每家餐厅存储餐桌信息。
- 维护这个餐厅列表的最佳方法是什么,这样我就可以返回一个列表,而不必每次都对这些信息进行排序。
编辑:关于如何存储表信息的问题。我特别担心的是存储一个表类意味着我正在创建不必要的对象。这是我的推理。5 张桌子可容纳 2 个人,每张桌子都有完全相同的物品——我的意思是,它们之间没有任何有意义的信息会有所不同。我只需要数字。没有座位/桌子。(如果我有一张 4 人但 3 人的桌子,我会考虑这张桌子)
我想创建3个数组。假设表格代表 1,2 等,所以 int[] differentSeatingOnTable; 它的索引是表格,值是允许的座位。接下来是一个带有 totalNoOfThosetable 的表数组,其中索引是表,值是此类表的总数。对于索引为表的空闲表 freeTables 以及剩余多少这样的空闲表也是如此。