Guava类库学习--Table(双键的Map)等

本文深入探讨了三键Map和BiMap的数据结构特点及其在实际应用中的优势。介绍了如何使用三键Map进行复杂数据的管理和转换,以及BiMap在实现双向映射时的注意事项和常见实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三键Map(有两个key一个value的map):    

一般系统中会用到很多字典数据,比如: pass:已审核,unaudited:未审核,reject:审核驳回,业务上这属于一种字典类型数据,这种类型就叫做audit_status,有时候我们会想通过英文转换为中文或者中文转换为英文,这时候需要写不同的方法来满足,以下类库将帮你省去这些麻烦:

        HashBasedTable<String, String, String> result = HashBasedTable.create();
        result.put("a","b","c");
        result.put("d","e","f");
        String value = result.get("d", "e");
        Map<String, String> rowGetKv = result.row("a");
        Map<String, String> columnGetKv = result.column("b");
        Map<String, Map<String, String>> columnMap = result.columnMap();
        Map<String, Map<String, String>> rowMap = result.rowMap();
        System.out.println("value结果为---"+value);
        System.out.println("rowGetKv结果为---"+rowGetKv);
        System.out.println("columnGetKv结果为---"+columnGetKv);
        System.out.println("columnMap结果为---"+columnMap);
        System.out.println("rowMap结果为---"+rowMap);

        value结果为---f
        rowGetKv结果为---{b=c}
        columnGetKv结果为---{a=c}
        columnMap结果为---{b={a=c}, e={d=f}}
        rowMap结果为---{a={b=c}, d={e=f}}

BiMap双映射map(也就是说可以通过value得到key也可以通过key得到value):

        HashBiMap<String, String> ooHashBiMap = HashBiMap.create();
        ooHashBiMap.put("a","张三a");
        ooHashBiMap.put("b","张三b");
        ooHashBiMap.put("c","张三c");
        ooHashBiMap.put("d","张三d");
        ooHashBiMap.put("e","张三e");
        ooHashBiMap.forcePut("f","张三a");

        String 张三a = ooHashBiMap.inverse().get("张三a");
        String 张三f = ooHashBiMap.inverse().get("张三a");
        System.out.println("emmmm");

        

        BiMap的常用实现有:

        1、HashBiMap: key 集合与 value 集合都有 HashMap 实现

        2、EnumBiMap: key 与 value 都必须是 enum 类型

        3、ImmutableBiMap: 不可修改的 BiMap

        注意看put方法的使用,如果value重复的话直接使用put方法会报错,可以统一使用forcePut来达到和hashMap一样的效果, 同时要注意Bimap的value也是不允许重复的,我们直接put入相同的值会报错,用forcePut来放入值也有可能会覆盖掉key,

有些数据想最大限度的提高查询速度,则可以使用本机缓存,这个方式是最快的,毕竟redis和mysql都需要走网络,

Google Guava Cache是一种非常优秀本地缓存解决方案,提供了CacheBuilder LocalCache等工具类,

SpringBoot都垂涎guava的功能而引入了此功能caffeine,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值