Java中是否有一个地图支持按(非唯一)值查找键?

问题描述 投票:0回答:3

我有一个设置,其中每个“人”都映射到一个特定的“房间”。

但是,多个人可以映射到同一房间。

所以这是Map<Person, Room>.put(Person, Room)的传统用例>

但是,查找总是会是“哪个人在这个房间里?”Set<People> get(Room q){}

我显然可以制作自己的数据结构或simply iterate over the key-value pairs;但是其中一个Java集合库是否具有良好的结构来支持我需要的参照完整性和查找?

我有一个设置,其中我的每个“人”都映射到一个特定的“房间”。但是,多个人可以映射到同一房间。因此,这是Map 。put(Person,Room)...

java guava
3个回答
1
投票

具有其他业务要求,例如一个人一次只能在一个房间里(从评论到问题),您将不得不恢复到数据存储的自定义抽象。

我建议不要公开数据结构,但要为Room and People提供适当的业务级别抽象。在实施中,您不仅需要将内容存储在简单的集合中,例如,检查业务规则。注释已经给出了一些指示,但是我的建议是停止从标准集合的角度考虑问题。


0
投票

我相信番石榴的Multimap [1]做您想要的。您可以将Room用作键,将Person用作值。然后,您可以使用get(someRoom)返回该房间中的人员集合。


0
投票

要回答您的特定问题,不,您不能用一个数据结构来完成全部操作。我会用

© www.soinside.com 2019 - 2024. All rights reserved.