代码之家  ›  专栏  ›  技术社区  ›  Joel

寻找支持GETKEY sFAVE值的Java MAP实现

  •  1
  • Joel  · 技术社区  · 15 年前

    我正在寻找java.util.map的一个实现,它有一个方法,可以返回所有映射到给定值的键,也就是说,有多个键映射到相同的值。我看过谷歌收藏和ApacheCommons,没有发现任何东西。当然,我可以遍历键集并检查每个对应的值,或者使用两个映射,但是我希望已经构建了一些可用的东西。

    4 回复  |  直到 15 年前
        1
  •  2
  •   akappa    15 年前

    我不知道该解决方案是否适合您,但是您可以通过使用从键到值的标准映射和 MultiMap 从值到键。

    当然,您必须注意这两个结构的同步,即当您从映射中删除一个键时,您必须从映射到多映射中的值的一组键中删除键本身。

    它看起来并不难实现,从内存开销方面来说可能有点重。

        2
  •  1
  •   toluju    15 年前

    你要找的是 bidirectional map ,其中有一个实现 commons collections .

        3
  •  0
  •   nicktmro    15 年前

    值对象可以有一个包含所有键的属性(可能是arraylist类型)。 然后扩展hashmap(或任何使用的map impl)并重写put,这样当您为一个键放置和对象时,您还可以将该键添加到对象的键列表中。

        4
  •  0
  •   John    15 年前

    我找不到支持多个键值的现成类。但是,您可以重新实现ApacheCommons DualHashBidiMap 使用A MultiHashMap 代替其中一个哈希图。