我拿着下面的 map
Map<Integer, List<String>>
当我向某个 int 添加一个新字符串时,我只是将它添加到我的映射中该 int 值的列表中。
现在,我还需要将它从它所在的最后一个列表中删除。
我将详细说明一下:
它不是字符串的同一个实例。我得到一个 int 和一个 String,我需要添加它并将其从 map 中具有相同字符串值的前一个列表中删除。
这意味着我需要保存另一个 String 到 Integer 的映射?
我需要维护两个集合吗?
谢谢。
最佳答案
它有点像 BiMap,但由于您的关系是不对称的(一个 int
指的是一个 List
的一个 String
而一个 String
只能指一个 int
),它不会成为完美的伴侣。
在我看来你好像想要两张 map ,第一张是你的 Map<Integer, List<String>>
第二个是Map<String, Integer>
.当然,您希望将其封装在类里面。然后添加一个新字符串:
- 如果有
String
的条目在Map<String, Integer>
,- 获取
Integer
从那个列表。 - 用它来查找
List
来自你的Map<Integer, List<String>>
并删除String
- 获取
- 添加
String
到相关List
在你的Map<Integer, List<String>>
- 添加一个映射
String
的条目到Integer
在Map<String, Integer>
.
关于java - 是否有一张 map 可以为我提供双向散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5926234/