import org.junit.Test;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
/**
* @author Andypan
* @BiMapTest.java
* @{describe}
* @date 2017年7月24日 下午6:48:21
*/
public class BiMapTest
{
@Test
public void BimapTest(){
BiMap<Integer,String> logfileMap = HashBiMap.create();
logfileMap.put(1,"a.log");
logfileMap.put(2,"b.log");
logfileMap.put(3,"c.log");
System.out.println("logfileMap:"+logfileMap);
BiMap<String,Integer> filelogMap = logfileMap.inverse();
System.out.println("filelogMap:"+filelogMap);
}
@Test
//Bimap数据的强制唯一性
// 在使用BiMap时,会要求Value的唯一性
// logfileMap.put(5,"d.log") 会抛出java.lang.IllegalArgumentException: value already present: d.log的错误。
//如果我们确实需要插入重复的value值,那可以选择forcePut方法。但是我们需要注意的是前面的key也会被覆盖了。
public void BimapTest2(){BiMap<Integer,String> logfileMap = HashBiMap.create();
logfileMap.put(1,"a.log");
logfileMap.put(2,"b.log");
logfileMap.put(3,"c.log");
logfileMap.put(4,"d.log");
logfileMap.forcePut(5,"d.log");
System.out.println("logfileMap:"+logfileMap);
}
// logfileMap:{5=d.log, 3=c.log, 2=b.log, 1=a.log}
@Test
public void BimapTest3(){
// 理解inverse方法
// inverse方法会返回一个反转的BiMap,但是注意这个反转的map不是新的map对象,它实现了一种视图关联,
//这样你对于反转后的map的所有操作都会影响原先的map对象。例如:
BiMap<Integer,String> logfileMap = HashBiMap.create();logfileMap.put(1,"a.log");
logfileMap.put(2,"b.log");
logfileMap.put(3,"c.log");
System.out.println("logfileMap:"+logfileMap);
BiMap<String,Integer> filelogMap = logfileMap.inverse();
System.out.println("filelogMap:"+filelogMap);
logfileMap.put(4,"d.log");
System.out.println("logfileMap:"+logfileMap);
System.out.println("filelogMap:"+filelogMap);
}
}