上節(jié)我們提到,如果需要一個(gè)Map的實(shí)現(xiàn)類,并且鍵的類型為枚舉類型,可以使用HashMap,但應(yīng)該使用一個(gè)專門的實(shí)現(xiàn)類EnumMap。
為什么要有一個(gè)專門的類呢?我們之前介紹過枚舉的本質(zhì),主要是因?yàn)槊杜e類型有兩個(gè)特征,一是它可能的值是有限的且預(yù)先定義的,二是枚舉值都有一個(gè)順序,這兩個(gè)特征使得可以更為高效的實(shí)現(xiàn)Map接口。
我們先來看EnumMap的用法,然后看它到底是怎么實(shí)現(xiàn)的。
用法
舉個(gè)簡(jiǎn)單的例子,比如,有一批關(guān)于衣服的記錄,我們希望按尺寸統(tǒng)計(jì)衣服的數(shù)量。
定義一個(gè)簡(jiǎn)單的枚舉類,Size,表示衣服的尺寸:
public enum Size { SMALL, MEDIUM, LARGE }
定義一個(gè)簡(jiǎn)單類,Clothes,表示衣服:
class