我正在寻找一个java.util.Map的实现,它有一个方法可以返回映射到给定值的所有键,也就是说,有多个键映射到相同的值。我查看了Google Collections和Apache Commons,但没有注意到任何内容。当然,我可以遍历键集并检查每个相应的值或使用两个映射,但我希望已经有一些可用的东西。
答案 0 :(得分:2)
我不知道这个解决方案是否适合您,但您可以通过使用从键到值的标准映射以及从值到键的MultiMap来轻松实现。
当然,你需要处理两个结构的同步,当你从地图中删除一个键时,你必须从映射到多图中的值的键集中删除键本身。
实现起来似乎并不困难,可能从内存开销方面来说有点沉重。
答案 1 :(得分:1)
您在这里寻找的是bidirectional map,commons collections中有一个实现。
答案 2 :(得分:0)
您的值对象可能具有包含所有键的属性(可能是ArrayList类型)。 然后你扩展HashMap(或你使用的任何Map impl)并覆盖put,这样当你为一个键放置和对象时,你也可以将键添加到对象的键列表中。
答案 3 :(得分:0)
我找不到支持多键值的现成类。但是,您可以使用DualHashBidiMap代替其中一个HashMaps重新实现Apache Commons MultiHashMap。