`
welcomezhang
  • 浏览: 17925 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Bimap必备

阅读更多

我们在使用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

分享到:
评论

相关推荐

    bimap:一个强大、灵活、高效的 JavaScript 双向地图实现

    var bimap = new BiMap bimap . push ( "key" , "value" ) ; bimap . key ( "key" ) ; // =&gt; "value" bimap . val ( "value" ) ; // =&gt; "key" bimap . push ( "France" , [ "Paris" , "Lyon" , "Marseille" ] ) ; ...

    bimap-一种快速的双向双射图实现-Rust开发

    bimap-rs bimap-rs是Rust的双向双向射影地图实现。 用法安装要在您的Rust项目中使用bimap-rs,请将以下内容添加到bimap-rs中:bimap-rs是Rust的双向双向图实现。 用法安装要在您的Rust项目中使用bimap-rs,请将以下...

    elixir-bimap:双向地图和多地图的Elixir实现

    **Elixir-Bimap:双向地图与多地图的深入理解** 在Elixir编程语言中,数据结构的选择对于编写高效且可维护的代码至关重要。Elixir-Bimap库提供了一种独特的方法来处理键值对,它引入了双向映射(Bimap)和多映射...

    bimap-rs:Rust中的通用双射图

    Rust是一种系统级编程语言,强调安全、并发和速度,而`bimap-rs`是一个专门为Rust设计的双射图(Bi-directional Map)库。本文将深入探讨`bimap-rs`库以及双射图在Rust编程中的应用。 双射图,也称为双向映射,是一...

    google的collection包

    在谷歌Collection包中,特别是其Guava子库,包含了丰富的数据结构,如Multiset、Multimap、BiMap等,以及各种实用的集合操作工具类。 首先,我们要关注的是`BiMap`,这是一个双向映射的接口,它要求键和值之间的...

    BI数据架构

    《大数据架构详解:从数据获取到深度学习》从架构、业务、技术三个维度深入浅出地介绍了大数据处理领域端到端的知识。主要内容包括三部分:第一部分从数据的产生、采集、计算、存储、消费端到端的角度介绍大数据技术...

    Bitmap,byte[],Drawable相互转化

    Bitmap是Android系统中用于存储和处理图像数据的重要类,它是一个位图,即像素的二维数组,常用于显示和操作图像。BitmapFactory是用于解析图片资源并生成Bitmap对象的工具类,例如`BitmapFactory.decodeResource()`...

    Google-Guava-Collections-使用介绍

    BiMap, Integer&gt; biMap = HashBiMap.create(); biMap.put("one", 1); biMap.put("two", 2); System.out.println(biMap.inverse().get(1)); // 输出 one ``` ##### 5. **MapMaker** `MapMaker` 提供了一个高度...

    Vb3.rar_读文件

    读256色bimap格式文件,具有放大,缩小,平移,旋转等功能

    BiMaps.jl:双射映射

    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 ...

    TP-LinkTD8800端口映射方法.doc

    端口映射是网络配置中的一个重要概念,尤其...总的来说,端口映射是网络管理员和IT从业者必备的技能之一,对于TP-Link TD8800路由器,理解并正确配置端口映射,能确保外部用户顺利访问内网服务,同时保障网络的安全性。

    guava不可修改集合

    在Guava中,BiMap是一种特殊的映射,它保证了映射关系的唯一性,每个键都对应一个值,而每个值也对应一个键。对于双向映射来说,它还提供了getInverse()方法来获取反向映射。这种类型的映射同样是可选的不可变版本。...

    qt中tab用法演示

    `bimap`是Boost库的一部分,全称是Bi-directional Map,双向映射,它提供了一种数据结构,允许在两个集合之间进行双向映射。虽然在Qt的TabWidget示例中通常不会直接用到Boost库,但在某些复杂的Qt应用中,可能会结合...

    guava collection简介1

    4. **BiMap**:BiMap 是双向映射,不仅保证键的唯一性,还保证值的唯一性,提供了更严格的键值对管理。 5. **MapMaker**:这是一个用于构建自定义 Map 实例的工具,可以设置缓存策略、并发级别等高级特性。 6. **...

    guava.zip

    Guava 提供了如 Multiset(多集)、Multimap(多映射)和 BiMap(双映射)等增强型集合,这些集合在传统 Java 集合的基础上增加了新的功能和性能优化。例如,Multiset 允许元素的重复计数,Multimap 可以将多个值...

    bifunctors:Haskell 98 bifunctors,bifoldables和bitraversables

    与单功能`Functor`的`fmap`函数类似,`bimap`接受两个函数作为参数,分别作用于类型构造器的左右两个类型参数。这使得我们可以对容器内的两个类型分别进行映射操作。例如,对于一个`(a, b)`类型的元组,我们可以使用...

    Boost-C++库_1.42(中文版)

    3. Boost.Bimap:提供双向关联容器,boost::bimap。 4. Boost.Bind:提供函数绑定功能,boost::bind。 5. Boost.Conversion:提供类型转换功能。 6. Boost.DateTime:提供日期和时间的处理功能。 7. Boost.Exception...

    GSCollections受Smalltalk启发的集合框架

    4. **Multimap和BiMap**:Multimap允许多个键对应一个值,而BiMap则保证了键值对的唯一性,即每个键只能映射到一个值,每个值也只能映射到一个键。这两个数据结构在处理复杂关联关系时非常有用。 5. **Functional...

    C++函数库(中英文都有)

    - Boost是一个广泛使用的C++库集合,包含了许多未被纳入C++标准的实用库,如Asio(网络编程)、Bimap(双向映射)、Date_Time(日期时间处理)等。 5. **其他第三方库** - Qt:跨平台的应用程序开发框架,包含...

    boost 1.41 中文文档,使用帮助,教程手册

    alai04 accumulators, any, assign, bimap, call_traits, circular_buffer, compatibility, concept check, config, conversion, date_time, filesystem, foreach, function_types, functional, integer, intrusive,...

Global site tag (gtag.js) - Google Analytics