【java代碼之美】---guava之Bimap

來源:互聯網
上載者:User

標籤:int   就是   概述   展示   ring   案例   size   create   集合   

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】

 

【java代碼之美】---guava之Bimap

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.