我有一个设置,其中每个“人”都映射到一个特定的“房间”。
但是,多个人可以映射到同一房间。
所以这是Map<Person, Room>.put(Person, Room)
的传统用例>
但是,查找总是会是“哪个人在这个房间里?”Set<People> get(Room q){}
我显然可以制作自己的数据结构或simply iterate over the key-value pairs;但是其中一个Java集合库是否具有良好的结构来支持我需要的参照完整性和查找?
我有一个设置,其中我的每个“人”都映射到一个特定的“房间”。但是,多个人可以映射到同一房间。因此,这是Map
具有其他业务要求,例如一个人一次只能在一个房间里(从评论到问题),您将不得不恢复到数据存储的自定义抽象。
我建议不要公开数据结构,但要为Room and People提供适当的业务级别抽象。在实施中,您不仅需要将内容存储在简单的集合中,例如,检查业务规则。注释已经给出了一些指示,但是我的建议是停止从标准集合的角度考虑问题。
我相信番石榴的Multimap
[1]做您想要的。您可以将Room
用作键,将Person
用作值。然后,您可以使用get(someRoom)
返回该房间中的人员集合。
要回答您的特定问题,不,您不能用一个数据结构来完成全部操作。我会用