google guava的BiMap:雙向Map

local0發表於2021-09-09

我們知道Map是一種鍵值對對映,這個對映是鍵到值的對映,而BiMap首先也是一種Map,他的特別之處在於,既提供鍵到值的對映,也提供值到鍵的對映,所以它是雙向Map.

想象這麼一個場景,我們需要做一個星期幾的中英文表示的相互對映,例如Monday對應的中文表示是星期一,同樣星期一對應的英文表示是Monday。這是一個絕好的使用BiMap的場景。

package cn.outofmemory.guava.collection; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; public class BiMapDemo {     public static void main(String[] args) {         BiMap weekNameMap = HashBiMap.create();         weekNameMap.put("星期一","Monday");         weekNameMap.put("星期二","Tuesday");         weekNameMap.put("星期三","Wednesday");         weekNameMap.put("星期四","Thursday");         weekNameMap.put("星期五","Friday");         weekNameMap.put("星期六","Saturday");         weekNameMap.put("星期日","Sunday");         System.out.println("星期日的英文名是" + weekNameMap.get("星期日"));         System.out.println("Sunday的中文是" + weekNameMap.inverse().get("Sunday"));     } }

BiMap的值鍵對的Map可以透過inverse()方法得到。

BiMap的常用實現有:

  1. HashBiMap: key 集合與 value 集合都有 HashMap 實現

  2. EnumBiMap: key 與 value 都必須是 enum 型別

  3. ImmutableBiMap: 不可修改的 BiMap

原文連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/132/viewspace-2805662/,如需轉載,請註明出處,否則將追究法律責任。

相關文章