java代码之美(7)---guava之Bimap
guava之Bimap
bimap的作用很清晰:它是一个一一映射,可以通过key得到value,也可以通过value得到key。
一、概述
1、bimap和普通HashMap区别
(1)在Java集合类库中的Map,它的特点是存放的键(Key)是唯一的,而值(Value)可以不唯一,而
bimap要求key和value都唯一,如果key不唯一则覆盖key,如果value不唯一则直接报错。
2、案例展示
public class bimapTest { public static void main(String args[]){ //双向map BiMap<Integer,String> biMap=HashBiMap.create(); biMap.put(1,"张三"); biMap.put(2,"李四"); biMap.put(3,"王五"); biMap.put(4,"赵六"); biMap.put(5,"李七"); biMap.put(4,"小小"); //通过key值得到value值(注意key里面的类型根据泛行 String value= biMap.get(1); System.out.println("id为1的value值 --"+value); //通过value值得到key值 int key= biMap.inverse().get("张三"); System.out.println("张三key值 --"+key); //通过key值重复,那么vakue值会被覆盖。 String valuename= biMap.get(4); System.out.println("id为4的value值 --"+valuename); } } /*运行结果: *id为1的value值 --张三 *张三key值 --1 *id为4的value值 --小小 */
如果value值重复,则运行直接报错如下:
biMap.put(6,"小小"); /**后台直接报错 * Exception in thread "main" java.lang.IllegalArgumentException: value already present: 小小 * at com.google.common.collect.HashBiMap.put(HashBiMap.java:285) * at com.google.common.collect.HashBiMap.put(HashBiMap.java:260) * at com.jincou.stream.study.bimapTest.main(bimapTest.java:40) */
如果你想value也发生覆盖key值,那么可以:
// inverse方法会返回一个反转的BiMap,但是注意这个反转的map不是新的map对象,它实现了一种视图关联,这样你对于反转后的map的所有操作都会影响原先的map对象。 biMap.forcePut(6,"小小"); int key6= biMap.inverse().get("小小"); System.out.println("小小key值 --"+key6);
/**后台输出(已经把:biMap.put(4,"小小"覆盖) * * 小小key值 --6 */
3、Bimap实现类
BiMap的常用实现有:
1、HashBiMap: key 集合与 value 集合都有 HashMap 实现
2、EnumBiMap: key 与 value 都必须是 enum 类型
3、ImmutableBiMap: 不可修改的 BiMap
想太多,做太少,中间的落差就是烦恼。想没有烦恼,要么别想,要么多做。中校【16】
分类:
【Java】-- 代码之美
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了