我需要使用枚舉鍵創建一個Map,其中只有一小部分枚舉常量將被實際插入。什麼是最好的方法? 如果EnumMap的底層數組的長度等於枚舉常量的總數,則EnumMap的效率會很低。使用枚舉鍵的稀疏映射
1
A
回答
2
我建議使用普通的HashMap
。
計算枚舉的哈希既簡單又便宜。應該沒有顯着的內存開銷,因爲您不復制枚舉對象,而是創建對同一對象的多個引用。出於這個原因,存儲一個整數鍵和存儲一個枚舉對象的引用應該沒什麼區別。
0
我也會去HashMap
或TreeMap
(取決於你是否需要確定性迭代器)。由於您的數據稀少,因此任何真實或想象的開銷都不會成爲顯着的性能障礙。
相關問題
- 1. 使用JPA映射枚舉
- 2. Grails枚舉映射
- 3. nhibernate映射枚舉對(鍵值)
- 4. 將枚舉映射到「子枚舉」
- 5. NHibernate的枚舉映射
- 6. 的Hibernate映射枚舉
- 7. 從稀疏鍵空間映射到密鑰空間
- 8. Hibernate枚舉映射使用註釋
- 9. 使用關聯值映射swift枚舉
- 10. 使用NHibernate映射一系列枚舉
- 11. 使用Hibernate映射枚舉值
- 12. Java:使用任何枚舉作爲鍵的映射
- 13. Hibernate'無表'枚舉映射?
- 14. dapper nuget 1.7枚舉映射
- 15. SqlDbType枚舉映射 - C#
- 16. 休眠枚舉映射
- 17. C++ - 映射類型枚舉
- 18. 映射Grails的/ Groovy的枚舉到MySQL枚舉
- 19. JSON映射異常構造映射從字符串枚舉的鍵
- 20. 保持與枚舉類的枚舉到對象映射?
- 21. 如何使用值注射器映射枚舉
- 22. NHibernate,SQL Server的 - 枚舉到int映射
- 23. 映射一個枚舉的列表
- 24. 的Hibernate映射枚舉爲varchar
- 25. 枚舉集合的nHibernate代碼映射
- 26. Rails的枚舉映射,顯示文本
- 27. 枚舉與ValueInjecter之間的映射
- 28. 如何使用NHibernate將枚舉映射到數據庫和從數據庫映射枚舉?
- 29. 用於使用枚舉鍵映射的GSON自定義序列化器
- 30. 通過Freemarker中的枚舉鍵訪問映射元素
爲什麼不是普通的HashMap? – 2013-04-25 10:30:22
你有多少枚枚舉常量?作爲一個近似的第一順序,「HashMap」每個條目需要32個字節;一個EnumMap將每個枚舉佔用4個字節常量。 – 2013-04-25 15:59:11
好點...所以EnumMap將會更好,除非枚舉數的數量與Map條目的數量之比大於8 – 2013-04-25 20:42:27