在 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
这是我第一次使用这个库。
为了解释我的问题让我们举这个小例子:
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