Google guava 最佳实践 学习指南之08 `BiMap`(双向映射)
guava 最佳实践 学习指南
Google Guava 库中的 BiMap(双向映射)是一种特殊的映射类型,它维护了映射的反向视图,并确保不存在重复值,且始终可以安全地使用值获取对应的键。以下是关于 Guava BiMap 的一些介绍和用法:
1. 概述
BiMap(或称为“双向映射”)是一种特殊的映射类型,它允许通过键查找值,同时也可以通过值查找键。这意味着在 BiMap 中,不仅键是唯一的,值也必须是唯一的。BiMap 接口扩展了 Map 接口,并添加了一些方法来提供反向视图。
2. BiMap 的实现类
Guava 提供了几种 BiMap 的实现:
- HashBiMap:基于哈希表的双向映射实现。它提供了常数时间的
containsKey、get和put操作(假设哈希函数是完美的)。由于其基于哈希表,它不保证元素的顺序。 - EnumBiMap:一种特殊的
BiMap,它要求键和值都是枚举类型。这种实现类型安全和高效,适用于键和值都是已知枚举值的情况。 - ImmutableBiMap:不可修改的
BiMap,遵循构建器模式。
3. BiMap 的常用方法
除了继承自 Map 接口的方法外,BiMap 还添加了一些特有的方法:
- inverse():返回一个视图,其中的键和值与原
BiMap中的值和键相反。注意,返回的是视图,对返回映射的更改将反映在原映射上,反之亦然。 - forcePut(K key, V value):类似于
put方法,但如果键或值已经存在,则会抛出IllegalArgumentException。 - containsValue(Object value):检查
BiMap中是否包含指定的值。
4. BiMap 的用法示例
以下是一个简单的示例,展示如何使用 Guava 的 HashBiMap 实现 BiMap 接口,并演示了它的多种方法:
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;public class BiMapExample {public static void main(String[] args) {// 创建一个空的HashBiMapBiMap<String, Integer> biMap = HashBiMap.create();// 向BiMap中添加元素biMap.put("One", 1);biMap.put("Two", 2);biMap.put("Three", 3);// 使用get方法通过键获取值System.out.println("Two maps to: " + biMap.get("Two")); // 输出: Two maps to: 2// 使用get方法通过值获取键(使用inverse()方法)System.out.println("2 maps to: " + biMap.inverse().get(2)); // 输出: 2 maps to: Two// 检查BiMap中是否包含某个键System.out.println("Does the map contain key 'One'? " + biMap.containsKey("One")); // 输出: Does the map contain key 'One'? true// 检查BiMap中是否包含某个值System.out.println("Does the map contain value 2? " + biMap.containsValue(2)); // 输出: Does the map contain value 2? true}
}
这个示例展示了如何创建 BiMap,添加元素,以及如何通过键和值进行查询。
相关文章:
Google guava 最佳实践 学习指南之08 `BiMap`(双向映射)
guava 最佳实践 学习指南 Google Guava 库中的 BiMap(双向映射)是一种特殊的映射类型,它维护了映射的反向视图,并确保不存在重复值,且始终可以安全地使用值获取对应的键。以下是关于 Guava BiMap 的一些介绍和用法&am…...
【设计模式】空接口
(空)接口的用法总结 接口用于定义某个类的特定能力或特性。在工作流或任务管理系统中,接口可以帮助标识哪些任务可以在特定阶段执行。通过实现这些接口,任务类可以被标识为在相应的阶段可以执行,从而在验证和执行逻辑…...
Grad-CAM-解释CNN决策过程的可视化技术
Grad-CAM(Gradient-weighted Class Activation Mapping)是一种用于解释卷积神经网络(CNN)决策过程的可视化技术。其核心思想是通过计算分类分数相对于网络确定的卷积特征的梯度,来识别图像中哪些部分对分类结果最为重要…...
前后端学习中本周遇到的内容
一、RequiresPermissions注解 例如: RequiresPermissions("demo:staff:save") void saveStaff(); 权限控制,要求含有demo:staff:save的权限才能执行方法saveStaff()。 二、遇到的细节问题 在进行增删改查时,发送http请求时&…...
基于海思soc的智能产品开发(巧用mcu芯片)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于开发车规级嵌入式软件的同学来说,socmcu这样的组合,他们并不陌生。但是传统的工业领域,比如发动机、医疗或…...
批量DWG文件转dxf(CAD图转dxf)——c#插件实现
此插件可将指定文件夹及子文件夹下的dwg文件批量转为dxf文件。 (使用方法:命令行输入 “netload” 加载插件,然后输入“dwg2dxf”运行,选择文件夹即可。) 生成dxf在此新建的文件夹路径下,包含子文件夹内的…...
flask flask-socketio创建一个网页聊天应用
应用所需环境: python 3.11.11 其他 只需要通过这个命令即可 pip install flask3.1.0 Flask-SocketIO5.4.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 最好是用conda创建一个新的虚拟环境来验证 完整的pip list如下 Package Version ----…...
使用CNN模型训练图片识别(键盘,椅子,眼镜,水杯,鼠标)
首先是环境: 我是在Anaconda3中的Jupyter Notebook (tensorflow)中进行训练,环境各位自行安装 数据集: 本次数据集五个类型(键盘,椅子,眼镜,水杯,鼠标)我收集了每个接近两…...
Gitlab 数据备份全攻略:命令、方法与注意事项
文章目录 1、备份命令2、备份目录名称说明3、手工备份配置文件3.1 备份配置文件3.2 备份ssh文件 4、备份注意事项4.1 停止puma和sicdekiq组件4.2 copy策略需要更多磁盘空间 5、数据备份方法5.1 docker命令备份5.2 kubectl命令备份5.3 参数说明5.4、选择性备份5.5、非tar备份5.6…...
Vue|scoped样式
在 Vue.js 中,scoped 是一个非常有用的特性,允许你将样式限制在当前组件的作用域内,避免样式泄漏到其他组件。它是通过 Vue 的单文件组件(.vue 文件)中的 <style> 标签实现的。 目录 案例演示创建多个vue文件如何…...
eBPF试一下(TODO)
eBPF程序跟踪linux内核软中断 eBPF (Extended Berkeley Packet Filter) 是一种强大的 Linux 内核技术,最初用于网络数据包过滤,但现在它已经扩展到了多个领域,如性能监控、安全性、跟踪等。eBPF 允许用户在内核中执行代码(以一种安…...
【数据安全】如何保证其安全
数据安全风险 数字经济时代,数据已成为重要的生产要素。智慧城市、智慧政务的建设,正以数据为核心,推动城市管理的智能化和公共服务的优化。然而,公共数据开放共享与隐私保护之间的矛盾日益凸显,如何在确保数据安全的…...
[创业之路-196]:华为成功经验的总结与教训简单总结
目录 前言: 成功经验 教训归纳 前言: 华为作为世界领先的通信设备制造商,其成功经验与教训值得深入探讨。 以下是对华为成功经验的总结与教训的归纳: 成功经验 战略定位明确: 华为始终坚持“死死抓住核心技术”…...
使用 NVIDIA DALI 计算视频的光流
引言 光流(Optical Flow)是计算机视觉中的一种技术,主要用于估计视频中连续帧之间的运动信息。它通过分析像素在时间维度上的移动来预测运动场,广泛应用于目标跟踪、动作识别、视频稳定等领域。 光流的计算传统上依赖 CPU 或 GP…...
【UE5】pmx导入UE5,套动作。(防止“气球人”现象。
参考视频:UE5Animation 16: MMD模型與動作導入 (繁中自動字幕) 问题所在: 做法记录(自用) 1.导入pmx,删除这两个。 2.转换给blender,清理节点。 3.导出时,内嵌贴图,选“复制”。 …...
vue预览和下载 pdf、ppt、word、excel文档,文件类型为链接或者base64格式或者文件流,
** 方法1:word、xls、ppt、pdf 这些文件, 如果预览的文件是链接可以直接打开,可用微软官方的预览地址 ** <iframe width"100%" :src"textVisibleURl " id"myFramePPT" style"border: none;backgroun…...
前端如何实现大文件上传
在前端实现大文件上传的主要方法包括分片上传、断点续传、WebSocket上传和通过第三方服务上传。 分片上传:将大文件切割成多个小片段,然后分别上传。可以使用HTML5的File API和Blob对象,通过FileReader读取文件内容,然后使…...
如何评估并持续优化AI呼入机器人的使用效果
如何评估并持续优化AI呼入机器人的使用效果 作者:开源呼叫中心FreeIPCC 随着人工智能技术的快速发展,AI呼入机器人在客户服务、技术支持等多个领域得到了广泛应用。这些智能系统不仅提高了工作效率,降低了运营成本,还显著改善了…...
找不同,找原因
Yes, you can use “by the time I get back to it” instead of “get around to it,” but there’s a slight difference in tone and meaning: • “Get around to it” implies finally finding the time or motivation to do something after delaying or procrastina…...
OpenCV 学习记录:首篇
最近在学习机器视觉,希望能通过记录博客的形式来鞭策自己坚持学完,同时也把重要的知识点记录下来供参考学习。 1. OpenCV 介绍与模块组成 什么是 OpenCV? OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软…...
3分钟掌握Illustrator批量替换神器:ReplaceItems.jsx终极效率指南
3分钟掌握Illustrator批量替换神器:ReplaceItems.jsx终极效率指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Illustrator中重复的替换操作烦恼吗?…...
AI工作流引擎设计:从Prompt工程到可编程组件的系统化实践
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫jmagly/aiwg。乍一看这个仓库名,可能有点摸不着头脑,但点进去之后,你会发现它其实是一个关于“AI写作指南”或“AI工作流生成器”的雏形。这类项目在当前AI应用爆发…...
若依框架下SpringBoot Excel图片导出的实战与优化
1. 若依框架与Excel图片导出需求解析 第一次接触若依框架的Excel导出功能时,我发现它默认只支持文本和数字类型的数据导出。但在实际业务中,像商品详情导出、员工档案管理这类场景,经常需要将图片嵌入Excel表格。比如电商平台需要导出商品主图…...
基于dpro-hyperliquid的Hyperliquid链上永续合约自动化交易开发指南
1. 项目概述与核心价值 最近在DeFi和链上交易领域,一个名为“dProLabs/dpro-hyperliquid”的项目引起了我的注意。简单来说,这是一个专门为Hyperliquid链上永续合约交易所设计的自动化交易工具包或策略框架。如果你是一名链上交易者,尤其是对…...
通信中间件dlz.comm架构解析:从核心原理到高性能实践
1. 项目概述:一个通信中间件的诞生最近在重构一个分布式数据处理系统时,我又一次被底层通信的复杂性绊住了。不同的服务节点之间,数据包的序列化、网络传输、连接管理、异常处理……这些代码像藤蔓一样缠绕在业务逻辑里,每次增加一…...
高压直流配电技术:数据中心能效革命的关键
1. 高压直流配电技术的革命性突破在数据中心和电信基站的配电房里,一排排嗡嗡作响的变压器和转换设备正消耗着惊人的能量。传统交流配电系统就像一条蜿蜒曲折的山路,电力需要经过多次"换乘"才能到达终端设备。而高压直流(HVDC&…...
胡桃讲编程|虚拟歌手星烁 R1 开发日志:技术落地清透少女音,九州网络技术研发全纪实
作者:龙沅可 大家好,我是胡桃~今天不谈算法与代码技巧,带大家沉浸式复盘一次虚拟歌手技术落地项目!由空晶宇宙全额投资并提供完整人设、核心资料,九州网络(组织)承接技术研发与模型…...
铁路光纤熔接机推荐:鼎讯 TY-30H 性能参数与应用场景
在铁路与高速公路通信建设中,光纤熔接质量直接决定信号传输稳定性。鼎讯 TY-30H 光纤熔接机作为专为野外严苛工况设计的熔接设备,凭借高效、低耗、耐用的综合性能,成为铁路高速通信施工、日常维护及应急抢修的核心设备。一、鼎讯 TY-30H 光纤…...
IDM无限试用终极方案:无需破解的完整技术指南
IDM无限试用终极方案:无需破解的完整技术指南 【免费下载链接】idm-trial-reset Use IDM forever without cracking 项目地址: https://gitcode.com/gh_mirrors/id/idm-trial-reset 你是否厌倦了每30天就要重新安装IDM(Internet Download Manager…...
杰理之先开广播再切换SPDIF光纤输入,会打印‘a’,无法播放和广播【篇】
具体参考git链接对应demo修改。...
