我有一个设置,其中我的每个“人员”都映射到一个特定的“房间”。
但是,多人可以映射到同一个房间。
如果看到现有人员,则应将其房间更新为新值。
所以这是 Map<Person, Room>.put(Person, Room)
的传统用例
但是,查找始终是“这个房间里有哪些人?”
Set<People> get(Room q){}
我显然可以制作自己的数据结构或 simply iterate over the key-value pairs ;但是Java集合库之一是否具有良好的结构来支持我需要的引用完整性和查找?
最佳答案
要回答您的具体问题,不,您无法使用一种数据结构完成所有工作。我会解决这个问题
Map<Person,Room> personRoom;
SetMultimap<Room,Person> roomPeople;
void addPersonToRoom(Person p,Room r){
Room currentRoom = personRoom.get(p);
if (currentRoom != null)
roomPeople.remove(currentRoom, p);
personRoom.put(p,r);
roomPeople.put(r,p);
}
Set<Person> getPeopleInRoom(Room r){
return roomPeople.get(r);
}
Room getRoomForPerson(Person p){
return personRoom.get(p);
}
关于java - Java中是否有Map支持通过(非唯一)值查找键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59933827/