BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构。
使用场景
通常情况下,我们在使用Java的Map时,往往是通过key来查找value的,但是会需要通过value来查找key,那么就需要便利整个map才可以找到。Bimap可以获取其反转map进行双向关联操作。
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import org.junit.Test;
/**
* @author Kevin
* @description
* @date 2016/8/5
*/
public class BimapTest {
@Test
public void bimapTest() {
BiMap<Integer,String> biMap = HashBiMap.create();
biMap.put(1,"Kevin");
biMap.put(2,"Han");
biMap.put(3,"Chris");
// 在使用BiMap时,会要求Value的唯一性
// 如果value重复了则会抛出错误:java.lang.IllegalArgumentException
//biMap.put(4,"Kevin");
// 可强制覆盖之前的value值
biMap.forcePut(4,"Kevin");
System.out.println(biMap);
// 反转map
BiMap<String,Integer> inverseBimap = biMap.inverse();
System.out.println(inverseBimap);
// 修改源map,同时影响反转的map
biMap.put(4,"Herry");
System.out.println(biMap);
System.out.println(inverseBimap);
// 修改反转map,同时也影响源map
inverseBimap.put("Nick",5);
System.out.println(biMap);
System.out.println(inverseBimap);
}
}