我在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"
,所以不值得去寻找一个复杂的解决方案。
发布于 2013-03-21 15:15:49
创建一个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"));
}
}
发布于 2012-05-22 17:45:23
Java标准API中没有双向映射。您可以自己维护两个映射,也可以使用Apache Collections中的BidiMap。
发布于 2012-05-22 17:45:50
Apache commons集合有一个BidiMap
https://stackoverflow.com/questions/10699492
复制相似问题