zoukankan      html  css  js  c++  java
  • 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
            HashBiMap<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值
            String value = biMap.get(1);
            System.out.println("id为1的value值==="+value);
    
            //通过value值得到key值
            Integer key = biMap.inverse().get("张三");
            System.out.println("张三key值--"+key);
    
            //通过key值重复,那么value值会被覆盖、
            String valueName = biMap.get(4);
            System.out.println("id为4的value值--"+valueName);
        }
    }

    运行结果:

     如果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

  • 相关阅读:
    php中的闭包和匿名函数
    php魔术常量
    SQL查询:存在一个表而不在另一个表中的数据
    php发送http请求的几种方式
    php高级工程师面试题
    php中include、require、include_once、require_once的区别
    gitignore规则基础
    Google地图数据算法
    【营销】包子和星座
    【GPS】 数据围栏
  • 原文地址:https://www.cnblogs.com/zhenbian/p/12941910.html
Copyright © 2011-2022 走看看