2013-04-25 108 views
1

我需要使用枚舉鍵創建一個Map,其中只有一小部分枚舉常量將被實際插入。什麼是最好的方法? 如果EnumMap的底層數組的長度等於枚舉常量的總數,則EnumMap的效率會很低。使用枚舉鍵的稀疏映射

+0

爲什麼不是普通的HashMap? – 2013-04-25 10:30:22

+1

你有多少枚枚舉常量?作爲一個近似的第一順序,「HashMap」每個條目需要32個字節;一個EnumMap將每個枚舉佔用4個字節常量。 – 2013-04-25 15:59:11

+1

好點...所以EnumMap將會更好,除非枚舉數的數量與Map條目的數量之比大於8 – 2013-04-25 20:42:27

回答

2

我建議使用普通的HashMap

計算枚舉的哈希既簡單又便宜。應該沒有顯着的內存開銷,因爲您不復制枚舉對象,而是創建對同一對象的多個引用。出於這個原因,存儲一個整數鍵和存儲一個枚舉對象的引用應該沒什麼區別。

0

我也會去HashMapTreeMap(取決於你是否需要確定性迭代器)。由於您的數據稀少,因此任何真實或想象的開銷都不會成爲顯着的性能障礙。