BiMap



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); 
       }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值