Java 中的双向映射?

新手上路,请多包涵

我在 Java 中有一个简单的整数到字符串的映射,但我需要能够轻松地从整数中检索字符串,以及从字符串中检索整数。我试过 Map,但它只能从整数中检索字符串,这是一种方法:

 private static final Map<Integer, String> myMap = new HashMap<Integer, String>();
// This works one way:
String myString = myMap.get(myInteger);

// I would need something like:
Integer myInteger = myMap.getKey(myString);

有没有正确的方法可以做到双向?

另一个问题是我只有几个不变的常量值( 1->"low", 2->"mid", 3->"high" ,所以不值得去寻求一个复杂的解决方案。

原文由 Danijel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 852
2 个回答

您可以为此使用 Google Collections API,最近重命名为 Guava ,特别是 BiMap

双映射(或“双向映射”)是一种保留其值及其键的唯一性的映射。此约束使 bimap 能够支持“反向视图”,这是包含与此 bimap 相同的条目但具有反向键和值的另一个 bimap。

原文由 epoch 发布,翻译遵循 CC BY-SA 4.0 许可协议

创建 Guava BiMap 并获取其反转值是微不足道的。

一个简单的例子:

 import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;

public class BiMapTest {

  public static void main(String[] args) {

    BiMap<String, String> biMap = HashBiMap.create();

    biMap.put("k1", "v1");
    biMap.put("k2", "v2");

    System.out.println("k1 = " + biMap.get("k1"));
    System.out.println("v2 = " + biMap.inverse().get("v2"));
  }
}

原文由 Michal Zmuda 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题