Map 使用時機
Map是一個介面(Interface),我們可以透過TreeMap類別或HashMap類別來實作Map。Map通常用來儲存「成雙成對」的資料集合,每一筆資料都有Key跟對應到的Value。
例如:
A(Key) 的ASCII碼是 65(Value)
B(Key) 的ASCII碼是 66(Value)
兩兩之間必須是唯一性,也就是說當你輸入A時,透過Map得到的值一定是65。
#實例
假設我需要大量翻譯(中翻英)字串時,如果使用if else,需要很多個判斷式,如果使用switch,也需要很多個case,程式碼看起來會非常冗長,並且不易閱讀也不好維護!
例如:
我需要翻譯100組字串
就需要100組的switch case

實際範例如下所示:
創建一個HashMap做為翻譯清單,依序將Key與對應的Value放進去。


如此一來可使程式碼精簡許多,且容易閱讀與修改。
例如:
A(Key) 的ASCII碼是 65(Value)
B(Key) 的ASCII碼是 66(Value)
兩兩之間必須是唯一性,也就是說當你輸入A時,透過Map得到的值一定是65。
#實例
假設我需要大量翻譯(中翻英)字串時,如果使用if else,需要很多個判斷式,如果使用switch,也需要很多個case,程式碼看起來會非常冗長,並且不易閱讀也不好維護!
例如:
我需要翻譯100組字串
就需要100組的switch case

此時可以使用Map來重構switch statement,將被翻譯的字串視為Key,翻譯過後的字串視為Value。需要特別注意的是,Key跟Value皆必須為物件!
簡單的程式碼範例如下所示:
簡單的程式碼範例如下所示:
private static Map<InputType, OutputType> MyMap =
new HashMap<InputType, OutputType>(...);
static
new HashMap<InputType, OutputType>(...);
static
{
MyMap.put(0, AAAAA);
MyMap.put(1, BBBBB);
MyMap.put(0, AAAAA);
MyMap.put(1, BBBBB);
...
}
}
實際範例如下所示:
創建一個HashMap做為翻譯清單,依序將Key與對應的Value放進去。

再透過以下程式碼依序將欲翻譯的字串帶入。

如此一來可使程式碼精簡許多,且容易閱讀與修改。
留言
張貼留言