Java 停车场设计2025年5月12日 | 阅读 8 分钟 在 Java 面试中,最突出的问题之一就是停车场设计。Java 停车场设计是一个设计问题,涉及车辆如何在停车场内停放。这主要是在亚马逊、谷歌、Facebook 等顶级跨国公司的 HLD 或 LLD(高级或低级设计)轮次中提出的。请注意,这个问题没有绝对正确或错误的答案。因此,这类设计问题需要与面试官进行充分的讨论,了解面试官想要什么样的停车场设计。例如,一位面试官可能希望停车场有 5 层楼,而另一位面试官则对单层停车场感到满意。 在本节中,我们将使用 Java 的面向对象范例来设计停车场。在阅读本节之前,读者需要对 Java 的面向对象原则有充分的了解。 ![]() 设计停车场我们将根据下面描述的设计编写停车场的代码。 我们设计中包含的对象是车辆 (Vehicles)、停车场 (ParkingLot)、停车位 (Slots) 和楼层 (Levels)。 停车场 (ParkingLot): 有 'x' 层或楼层,每层有 'y' 个停车位。 楼层 (Levels): 每一层都是一个独立的实体,包含楼层号、其停车位以及其中的车道。 车道数量是根据停车位数量设计的。在本例中,10 个停车位构成 1 条车道。 停车位 (Slots): 一个停车位与其他停车位是独立的。停车位大小对车辆停放至关重要。例如,一个大车辆无法停放在一个小车位里。 车辆 (Vehicles): 包含公司名称、车辆编号及其类型。车辆有车牌和其所属公司的属性。 我们已将停车位和楼层视为独立的实体,这样以后可以为楼层添加任意数量的停车位。 每当车辆进出时,代表该车辆所属公司的车辆列表都会被更新。由于车辆的进入或离开,可用停车位的数量也会随之更新。 方法parkVehicle(): parkVehicle() 方法会相应地停放车辆,同时还会考虑制造该车辆的公司。 leaveOperation(): 该操作负责让车辆 'V' 在楼层 'x' 离开。 companyParked(): CompanyParked() 方法方便用户查看特定公司停放的车辆列表。 停车场 Java 程序完成设计部分后,我们就可以编写代码了。下面的程序使用了上述设计来创建一个停车场。 文件名: VSize.java 文件名: Vehicle.java 文件名: Car.java 文件名: Motorcycle.java 文件名: Lvl.java 文件名: ParkingSlot.java 文件名: ParkingLot.java 文件名: Main.java 输出 Level 0 created with 2 slots Level 1 created with 2 slots ------------------------------------ It is a Car parked in Lane Number 0, Slot Number 0 Level 0 with Vehicle Number 1234 from Microsoft ------------------------------------ It is a Motorcycle parked in Lane Number 0, Slot Number 1 Level 0 with Vehicle Number 4016 from Microsoft ------------------------------------ It is a Car parked in Lane Number 0, Slot Number 0 Level 1 with Vehicle Number 1609 from Google ------------------------------------------ The vehicles of Microsoft: 1234 4016 ------------------------------------------ The vehicles of Google: 1609 ------------------------------------------ Available Slots in the current level :1 Slot freed from Level 0 and exited 4016 of Microsoft ------------------------------------------ The vehicles of Microsoft: 1234 ------------------------------------ It is a Motorcycle parked in Lane Number 0, Slot Number 1 Level 1 with Vehicle Number 1389 from Google ------------------------------------ PARKING IS FULL 下一主题Java 代码解释器 |
在软件开发领域,文本处理是一项常见任务。无论我们是构建搜索引擎、聊天机器人还是任何处理文本的应用程序,我们可能都需要确定字符串中是否存在某些单词。在本节中,我们……
阅读 8 分钟
在 Java 中,提供的字符通过 Reader 类的 read(char[]) 函数读取到数组中。尝试读取数组长度数量的字符后,将返回成功读取的字符数。在处理...时,通常会采用此技术。
阅读 4 分钟
在 2D 网格中创建类似于螺旋或同心环的特定模式被称为“在矩阵中形成线圈”。为了完成此操作,通常需要找到矩阵元素的有序遍历,其中值按顺序和结构化的方式分组。
7 分钟阅读
在 Java 8 Streams 中,flatMap() 方法将操作作为映射器函数应用,并提供元素值的流。这意味着在每个元素的每次迭代中,map() 方法都会创建一个单独的新流。通过使用*展平机制*,它会合并...
阅读 13 分钟
在本节中,我们将学习什么是奢侈数,并创建 Java 程序来检查给定数字是否为奢侈数。奢侈数 Java 程序经常在 Java 编码面试和学术中出现。奢侈数 一个自然数,其...
阅读 4 分钟
Java long 关键字是一个基本数据类型。它用于声明变量。它也可以与方法一起使用。它可以容纳一个 64 位二进制补码整数。当我们需要的存储的整数值超过范围时,通常会使用它...
5 分钟阅读
异常处理是Java编程的一个关键方面,它允许开发人员优雅地处理意外错误并保持应用程序的稳定性。Java开发人员遇到的一个常见异常是InvocationTargetException。在本节中,我们将探讨InvocationTargetException是什么,它的原因以及如何...
5 分钟阅读
Java 是一种强大的编程语言,以其多功能性和广泛的库而闻名。在处理数组时,您可能经常遇到需要计算两个数组之和的情况。无论您是初学者还是经验丰富的开发人员,理解如何完成此任务...
5 分钟阅读
向量是既有大小又有方向的数学实体。在计算机编程中,向量通常用于表示同时具有大小和方向的量,例如速度、力、位移。Java 作为一种流行的面向对象编程语言,通过……为向量运算提供了内置支持。
阅读 8 分钟
许多与字符串相关的挑战中一个令人着迷的难题是查找和计数满足特定要求的子字符串。查找和计数至少包含一个元音和一个辅音的所有子字符串就是这样一个任务。这个问题说明了多种算法技术,从暴力方法...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India