在 Java 中使用 Guava BiMap

using Guava BiMap in Java

这是我第一次使用这个库。

为了解释我的问题让我们举这个小例子:

package javaapplication7;


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


public class JavaApplication7 {
public static void main(String[] args) {
    BiMap<Integer, Integer> biMap = HashBiMap.create();

    biMap.put(0, 0);
    biMap.put(2, 1);
    biMap.inverse().put(1,3);

    System.out.println(biMap.get(0));
    System.out.println(biMap.get(2));
    System.out.println(biMap.inverse().get(1));

    }

}

这个程序的结果是:

0

null

3

通常对于第二次打印我应该得到 1 ,有人可以向我解释为什么我得到空值吗?

在我的程序中,我应该在地图中放置一些没有特定顺序的整数,我该怎么做?

我想得到前面例子的 0 1 3 结果。

谢谢。

通过将 key 1 插入 inversed 双图视图,您实际上覆盖了 value 1 你之前映射过(即在 "normal" biMap 中不再有键 2,但在 3 下有值 1 ).看看每次操作后您的 biMap 发生了什么:

biMap.put(0, 0);
System.out.println(biMap); // {0=0}
biMap.put(2, 1);
System.out.println(biMap); // {0=0, 2=1}
final Integer previousValue = biMap.inverse().put(1, 3);
System.out.println(biMap); // {0=0, 3=1}
System.out.println(previousValue); // 2