我们在使用Java的Map时,往往是通过key来查找value的,但是如果希望通过value(这些value通常不重复)来找key,我们就需要额外编写for循环代码来匹配了。在这种场景下,你应该想到BiMap。
BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构。
@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
理解inverse方法
inverse方法会返回一个反转的BiMap,但是注意这个反转的map不是新的map对象,它实现了一种视图关联,这样你对于反转后的map的所有操作都会影响原先的map对象。
详细可参考:http://www.cnblogs.com/peida/p/Guava_Bimap.html
相关推荐
var bimap = new BiMap bimap . push ( "key" , "value" ) ; bimap . key ( "key" ) ; // => "value" bimap . val ( "value" ) ; // => "key" bimap . push ( "France" , [ "Paris" , "Lyon" , "Marseille" ] ) ; ...
bimap-rs bimap-rs是Rust的双向双向射影地图实现。 用法安装要在您的Rust项目中使用bimap-rs,请将以下内容添加到bimap-rs中:bimap-rs是Rust的双向双向图实现。 用法安装要在您的Rust项目中使用bimap-rs,请将以下...
**Elixir-Bimap:双向地图与多地图的深入理解** 在Elixir编程语言中,数据结构的选择对于编写高效且可维护的代码至关重要。Elixir-Bimap库提供了一种独特的方法来处理键值对,它引入了双向映射(Bimap)和多映射...
Rust是一种系统级编程语言,强调安全、并发和速度,而`bimap-rs`是一个专门为Rust设计的双射图(Bi-directional Map)库。本文将深入探讨`bimap-rs`库以及双射图在Rust编程中的应用。 双射图,也称为双向映射,是一...
在谷歌Collection包中,特别是其Guava子库,包含了丰富的数据结构,如Multiset、Multimap、BiMap等,以及各种实用的集合操作工具类。 首先,我们要关注的是`BiMap`,这是一个双向映射的接口,它要求键和值之间的...
《大数据架构详解:从数据获取到深度学习》从架构、业务、技术三个维度深入浅出地介绍了大数据处理领域端到端的知识。主要内容包括三部分:第一部分从数据的产生、采集、计算、存储、消费端到端的角度介绍大数据技术...
Bitmap是Android系统中用于存储和处理图像数据的重要类,它是一个位图,即像素的二维数组,常用于显示和操作图像。BitmapFactory是用于解析图片资源并生成Bitmap对象的工具类,例如`BitmapFactory.decodeResource()`...
BiMap, Integer> biMap = HashBiMap.create(); biMap.put("one", 1); biMap.put("two", 2); System.out.println(biMap.inverse().get(1)); // 输出 one ``` ##### 5. **MapMaker** `MapMaker` 提供了一个高度...
读256色bimap格式文件,具有放大,缩小,平移,旋转等功能
bimap = BiMap {Int,String} () bimap . left[ 1 ] = " one " bimap . left[ 2 ] = " two " bimap . right[ " three " ] = 3 @assert bimap . left[ 1 ] == " one " @assert bimap . right[ " two " ] == 2 @assert ...
端口映射是网络配置中的一个重要概念,尤其...总的来说,端口映射是网络管理员和IT从业者必备的技能之一,对于TP-Link TD8800路由器,理解并正确配置端口映射,能确保外部用户顺利访问内网服务,同时保障网络的安全性。
在Guava中,BiMap是一种特殊的映射,它保证了映射关系的唯一性,每个键都对应一个值,而每个值也对应一个键。对于双向映射来说,它还提供了getInverse()方法来获取反向映射。这种类型的映射同样是可选的不可变版本。...
`bimap`是Boost库的一部分,全称是Bi-directional Map,双向映射,它提供了一种数据结构,允许在两个集合之间进行双向映射。虽然在Qt的TabWidget示例中通常不会直接用到Boost库,但在某些复杂的Qt应用中,可能会结合...
4. **BiMap**:BiMap 是双向映射,不仅保证键的唯一性,还保证值的唯一性,提供了更严格的键值对管理。 5. **MapMaker**:这是一个用于构建自定义 Map 实例的工具,可以设置缓存策略、并发级别等高级特性。 6. **...
Guava 提供了如 Multiset(多集)、Multimap(多映射)和 BiMap(双映射)等增强型集合,这些集合在传统 Java 集合的基础上增加了新的功能和性能优化。例如,Multiset 允许元素的重复计数,Multimap 可以将多个值...
与单功能`Functor`的`fmap`函数类似,`bimap`接受两个函数作为参数,分别作用于类型构造器的左右两个类型参数。这使得我们可以对容器内的两个类型分别进行映射操作。例如,对于一个`(a, b)`类型的元组,我们可以使用...
3. Boost.Bimap:提供双向关联容器,boost::bimap。 4. Boost.Bind:提供函数绑定功能,boost::bind。 5. Boost.Conversion:提供类型转换功能。 6. Boost.DateTime:提供日期和时间的处理功能。 7. Boost.Exception...
4. **Multimap和BiMap**:Multimap允许多个键对应一个值,而BiMap则保证了键值对的唯一性,即每个键只能映射到一个值,每个值也只能映射到一个键。这两个数据结构在处理复杂关联关系时非常有用。 5. **Functional...
- Boost是一个广泛使用的C++库集合,包含了许多未被纳入C++标准的实用库,如Asio(网络编程)、Bimap(双向映射)、Date_Time(日期时间处理)等。 5. **其他第三方库** - Qt:跨平台的应用程序开发框架,包含...
alai04 accumulators, any, assign, bimap, call_traits, circular_buffer, compatibility, concept check, config, conversion, date_time, filesystem, foreach, function_types, functional, integer, intrusive,...