java - Java中是否有支持按(非唯一)值查找键的映射?
问题描述
我有一个设置,我的每个“人”都映射到一个特定的“房间”。
但是,多人可以映射到同一个房间。
如果看到现有人,则应将其房间更新为新值。
所以这是传统的用例Map<Person, Room>.put(Person, Room)
但是,查找总是会是“这个房间里有哪些人?”
Set<People> get(Room q){}
我显然可以制作自己的数据结构或简单地迭代键值对;但是其中一个 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);
}
推荐阅读
- r - 如何通过两个因素进行计算
- python - .agg PYTHON 中未定义均值
- php - 递归地将值添加到数组
- amazon-web-services - 在 GitHub 存储库中的每个新拉取请求上触发 AWS CodePipeline
- sql - 有没有办法根据条件退出当前功能但不结束程序
- java - 使用 JsonArray 和 HashMap 解析 JSON
- ios - tableView 单元格中的 UI 按钮后的“A”字符?
- r - export::graph2office 移动轴标签
- swiftui - SwiftUI 列表背景颜色
- amazon-web-services - CloudWatch 代理 CPU 收集的指标未显示