首页 > 其他分享 >Guava学习笔记:Guava新增集合类型-Bimap

Guava学习笔记:Guava新增集合类型-Bimap

时间:2023-01-09 21:47:35浏览次数:43  
标签:logfileMap log System 笔记 BiMap Bimap put Guava filelogMap

    @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);
    }

Bimap数据的强制唯一性

  在使用BiMap时,会要求Value的唯一性。如果value重复了则会抛出错误:java.lang.IllegalArgumentException,例如:

    @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");         
        logfileMap.put(4,"d.log"); 
        logfileMap.put(5,"d.log"); 
    }

  logfileMap.put(5,"d.log") 会抛出java.lang.IllegalArgumentException: value already present: d.log的错误。如果我们确实需要插入重复的value值,那可以选择forcePut方法。但是我们需要注意的是前面的key也会被覆盖了。

    @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"); 
        
        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}

理解inverse方法

  inverse方法会返回一个反转的BiMap,但是注意这个反转的map不是新的map对象,它实现了一种视图关联,这样你对于反转后的map的所有操作都会影响原先的map对象。例如:

@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);
        
        logfileMap.put(4,"d.log"); 

        System.out.println("logfileMap:"+logfileMap); 
        System.out.println("filelogMap:"+filelogMap); 
    }

  输出:

logfileMap:{3=c.log, 2=b.log, 1=a.log}
filelogMap:{c.log=3, b.log=2, a.log=1}
logfileMap:{4=d.log, 3=c.log, 2=b.log, 1=a.log}
filelogMap:{d.log=4, c.log=3, b.log=2, a.log=1}

标签:logfileMap,log,System,笔记,BiMap,Bimap,put,Guava,filelogMap
From: https://www.cnblogs.com/junzi2099/p/17038582.html

相关文章

  • Springcloud源码学习笔记1—— Zuul网关原理
    系列文章目录和关于我源码基于spring-cloud-netflix-zuul-2.2.6.RELEASE.jar需要具备SpringMVC源码功底推荐学习https://www.cnblogs.com/cuzzz/p/16538064.html零丶......
  • 学习笔记——Mybatis映射文件根标签与子标签
    2023-01-09一、Mybatis映射文件1、映射文件根标签mapping标签:该标签中的namespace要求与接口的全类名一致2、映射文件子标签(1)cache(该命名空间的缓冲配置)(2)cache-ref(......
  • Python笔记(3)——列表二:操作列表(Python编程:从入门到实践)
    一、遍历列表1. 遍历整个列表:使用for循环1colors=['red','yellow','blue','green']#定义列表2forcolorincolors:#使用循环:从列表中提取一个元素并将其存......
  • ABB 800XA学习笔记4:设置windows 2016 server的默认登陆用户
    这一篇学习笔记我在新浪博客发表过,地址是ABB800XA学习笔记04:设置windowsserver2016默认登录用户_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里我保留一份,以免丢失 ......
  • ASP.NET Core学习笔记2
    ASP.NETCore学习笔记2 CRUD是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。Swagger/OpenAPI定义Swagge......
  • ABB 800XA学习笔记3:基本配置
    下面的内容我在新浪博客也发表过,地址是ABB80XA学习笔记03:基本配置_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里记录一遍,以免丢失。这边笔记生成的时候,我刚刚开始学习......
  • ABB AC900F学习笔记:IO数量超限,扫描不到硬件
    以下内容我在新浪博客发表过,地址是abbac900f扫描不到硬件故障_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一下,以免丢失现场有一套ABBAC900F,CPU是PM904F。最......
  • 动态库静态库笔记
    命名linux下,动态库以.so结尾,静态库以.a结尾libxxx.a/libxxx.sogcc链接这些库的时候使用的是该库的名字xxx而不是全称libxxx.a静态库制作和使用c静态库制作gcc-c命......
  • 学习笔记——Mybatis核心配置文件概述及根标签
    2023-01-09一、Mybatis核心配置文件概述及根标签1、核心配置文件的概述(即“mybatis-config.xml”)MyBatis的配置文件包含了会深深影响MyBatis行为的设置和属性信息。2、......
  • ABB 800XA学习笔记3:windows server安装中文语言包
    这一篇我在新浪博客发表过,地址是windowsserver2016英文版安装中文语言包_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一遍,以免丢失办公室电脑上虚拟机里面安......