Guava的BiMap非常强大,我们很容易就可以构造出一个双向的Map。 请看示例代码: import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; public class TryBiMap { public static void main(String[] args) { BiMap<String, String> aBiMap = HashBiMap.<String, String>create(); aBiMap.put("abc", "def"); aBiMap.put("defe", "abcd"); System.out.println(aBiMap); // output: {abc=def, defe=abcd} System.out.println(aBiMap.get("abc")); // output: def // 这行为抛异常! // 因为"defe":"abcd"已存在,所以它会影响BiMap.inverse(). // aBiMap.put("abc", "abcd"); // 但我们可以用BiMap.forcePut()强制放入"abc":"abcd" // 放入的同时"defe":"abcd"也被删除了 aBiMap.forcePut("abc", "abcd"); // 用BiMap.inverse()得到反转的Map. aBiMap = aBiMap.inverse(); System.out.println(aBiMap); // output: {abcd=abc} System.out.println(aBiMap.get("abcd")); // output: abc } }