2023年1月9日

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

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

posted @ 2023-01-09 21:25 Louis军 阅读(87) 评论(0) 推荐(0) 编辑

2022年2月23日

SQL中join连接查询时条件放在on后与where后的区别

摘要: 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下: 1、**on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。** 2、**where条件是在临时表生成 阅读全文

posted @ 2022-02-23 13:54 Louis军 阅读(159) 评论(0) 推荐(0) 编辑

2022年1月29日

MAC常用命令汇总

摘要: 查看Mac的端口号以及占用情况 命令 lsof -i tcp:port (port替换成端口号,比如6379)可以查看该端口被什么程序占用,并显示PID,方便KILL(kill pid) 1.查看端口被哪个程序占用 sudo lsof -i tcp:port 如: sudo lsof -i tcp: 阅读全文

posted @ 2022-01-29 11:36 Louis军 阅读(164) 评论(0) 推荐(0) 编辑

2021年12月13日

log4j2不打印日志或者打印不受控制的日志解决办法

摘要: 起因 前几天一个跑有java应用的生产集群(200多台物理机)升级了一个版本,重启后发现约有50台机器日志不能正常输出,但其程序确能正常的运行,在生产环境中,日志是非常重要的一个监控手段,如果没有日志输出,无疑是非常危险的。 排查 发现这一情况后,立即开始从jdk环境和版本,cpu负载,内存gc,线 阅读全文

posted @ 2021-12-13 18:28 Louis军 阅读(6917) 评论(1) 推荐(0) 编辑

2021年12月8日

Parameter '0' not found.Available parameters are [arg1, arg0, param1, param2]的解决方法

摘要: 在ssm框架中,mybatis+spring操作数据库报错: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'c 阅读全文

posted @ 2021-12-08 16:09 Louis军 阅读(2937) 评论(0) 推荐(0) 编辑

Mockito MockBean不能mock MyBatis Mapper解决方法

摘要: 问题描述 我在使用 MockBean 注解来模拟 MyBatis 接口(interface)的bean(例如 DAO)时遇到了问题。 @Mapper @Repository public interface OrderDAO { int insertOrder(@Param("order") Ord 阅读全文

posted @ 2021-12-08 15:14 Louis军 阅读(2725) 评论(0) 推荐(0) 编辑

2021年9月6日

mysql 有就更新 没有就插入

摘要: 数据持久化的过程中,有时会遇到这样的需求: 当数据库表中存在符合某种条件的数据时,需要去更新它,不存在时,则需要新增,也就是insertOrUpdate操作,本文主要讲解MySQL中的INSERT ... ON DUPLICATE KEY UPDATE语句,该语句是基于唯一索引或主键使用,比如一张表 阅读全文

posted @ 2021-09-06 16:27 Louis军 阅读(1271) 评论(0) 推荐(0) 编辑

2020年12月29日

IDEA反编译jar包源码

摘要: 准备jar包 例如,我准备看resin的jar,在桌面准备了一份 idea打开文件夹 在idea中file >open >刚才的文件夹 最后一步 可以看到有的有小三角,有的没有,刚进来是没有的找到没有小三角的右键然后就能查看源码了 阅读全文

posted @ 2020-12-29 21:21 Louis军 阅读(618) 评论(0) 推荐(0) 编辑

Redis Lua实战

摘要: 1. 基本用法 1.1 EVAL script numkeys key [key ...] arg [arg ...] numkeys 是key的个数,后边接着写key1 key2... val1 val2....,举例 127.0.0.1:6379> eval "return {KEYS[1],K 阅读全文

posted @ 2020-12-29 21:16 Louis军 阅读(495) 评论(0) 推荐(0) 编辑

Spring AOP拦截并打印controller层请求日志

摘要: /** * Aop implementation of request log printing * * Created b on 9:07 2017/10/27 */ @Component @Aspect public class RequestLog { public static final 阅读全文

posted @ 2020-12-29 20:46 Louis军 阅读(888) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示