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

  • 相关阅读:
    19_05_01校内训练[划分]
    19_05_01校内训练[polygon]
    [Untiy]贪吃蛇大作战(四)——游戏主界面
    [Untiy]贪吃蛇大作战(三)——商店界面
    [Untiy]贪吃蛇大作战(二)——规则界面
    [Untiy]贪吃蛇大作战(一)——开始界面
    [C#]简单的理解委托和事件
    [C#]关于override和new在重写方法时的区别
    [C#]关于逆变与协变的基本概念和修饰符in与out的意义
    [剑指Offer]剪绳子
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/9425039.html
Copyright © 2011-2022 走看看