我需要使用枚舉鍵創建一個Map,其中只有一小部分枚舉常量將被實際插入。什麼是最好的方法? 如果EnumMap的底層數組的長度等於枚舉常量的總數,則EnumMap的效率會很低。使用枚舉鍵的稀疏映射
1
A
回答
2
我建議使用普通的HashMap
。
計算枚舉的哈希既簡單又便宜。應該沒有顯着的內存開銷,因爲您不復制枚舉對象,而是創建對同一對象的多個引用。出於這個原因,存儲一個整數鍵和存儲一個枚舉對象的引用應該沒什麼區別。
0
我也會去HashMap
或TreeMap
(取決於你是否需要確定性迭代器)。由於您的數據稀少,因此任何真實或想象的開銷都不會成爲顯着的性能障礙。
相關問題
- 1. 使用JPA映射枚舉
- 2. Doctrine2映射枚舉
- 3. Grails枚舉映射
- 4. nhibernate映射枚舉對(鍵值)
- 5. 映射比稀疏向量更好嗎?
- 6. 使用枚舉和映射的
- 7. 將枚舉映射到「子枚舉」
- 8. 自動映射器枚舉枚舉類
- 9. NHibernate的枚舉映射
- 10. 的Hibernate映射枚舉
- 11. 狀態映射/枚舉映射
- 12. 使用NHibernate映射一系列枚舉
- 13. 使用關聯值映射swift枚舉
- 14. Hibernate枚舉映射使用註釋
- 15. 使用Hibernate映射枚舉值
- 16. 從稀疏鍵空間映射到密鑰空間
- 17. Java:使用任何枚舉作爲鍵的映射
- 18. 流利Nhibernate枚舉映射
- 19. SqlDbType枚舉映射 - C#
- 20. Amazon DynamoDB映射枚舉
- 21. 枚舉映射在Hibernate中
- 22. 休眠枚舉映射
- 23. Hibernate'無表'枚舉映射?
- 24. C++ - 映射類型枚舉
- 25. dapper nuget 1.7枚舉映射
- 26. 映射Grails的/ Groovy的枚舉到MySQL枚舉
- 27. Hibernate:用破折號映射枚舉
- 28. 保持與枚舉類的枚舉到對象映射?
- 29. 將枚舉映射到使用枚舉特定方法的函數/動作
- 30. 如何使用值注射器映射枚舉
爲什麼不是普通的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