在Java中使用Guava BiMap

时间:2018-07-05 12:53:24

标签: java dictionary collections guava

这是我第一次使用该库。

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

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

     

     

3

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

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

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

谢谢。

1 个答案:

答案 0 :(得分:2)

通过在反向 bimap视图中插入 1,实际上覆盖了您已经拥有的 1映射得更早(例如,在“正常” 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