【发布时间】:2016-01-28 11:00:11
【问题描述】:
我即将设计一个具有对象列表的类,列表中的每个对象也是另一个对象列表。有没有更好的方法来设计这种场景?
这里,如果我要遍历所有房间,我需要先遍历楼层列表,然后再遍历房间。
例如:酒店 HAS=> 楼层列表 HAS=> 房间列表
class Room
{
int roomNo;
boolean occupied;
}
class Floor
{
int floorNo;
ArrayList<Room> roomList = new ArrayList<Room>();
}
class Hotel
{
ArrayList<Floor> floorList = new ArrayList<Floor>();
}
【问题讨论】:
-
这样想:如果你真的在酒店里要亲自动手做这件事,你会怎么做?
-
@JonK 我会先检查一楼的空缺情况,然后是第二个......直到最后一层。
-
那是不是必须遍历两个列表?你能否保留一个单独的列表,只包含空房间,不管它们在哪一层?这使得检查空闲房间的效率更高(您只需
vacantRooms.isEmpty()),但您必须记住在每个房间被占用时将其从列表中删除。 -
@JonK 好的。我可以做到。我只能遍历空房间,但正如你所说,我需要注意维护新的
vacantRooms列表。谢谢 -
如果你走这条路,你只需要确保你的
occupy()和vacate()方法(或它们的等效方法)正确地添加和删除该列表。