我正在编写一个程序,其中所有密钥对输入的数据都将存储在HashMaps
(HashMap<Integer, List<String>>
)。(它是读取重类型)
我需要决定是将其存储在单个大型 HashMap
中,还是创建几个较小的 HashMaps
。
无论哪种方式,程序都会提供相同的输出,但我需要了解最佳实践(更好的性能)?
在性能方面哪个决策更好?
如果在多个HashMaps上选择单个HashMap会影响性能多少?
计划详情:
存储的总数据小于 20,000 。
关键是integer
。
该值为List<String>
。
使用方法:
第一次输入data
时,method
会对其进行处理并提供Output
。
并将数据存储到光盘中,以便下次可以使用直接命令给出输出。
答案 0 :(得分:0)
请参阅,如果您想存储数据(仅限商店)并且其中包含一种类型的元素,请使用ArrayList并一次性推送您的数据。
但如果您有密钥对值,请使用HashMap并立即全部推送。
在性能方面,而不是每次为列表/地图获取内存不是一个好的解决方案,只需立即推送所有数据
还认为如果你的数据在不同的hashMap集中,你将如何遍历它?
在每个术语中,您都会知道将数据放入小型HashMap中并不是一个好的解决方案,因为没有必要使用它。
并且存储一个值并不是很重要,主要关注的是遍历HashMap以减少遍历的时间,你可以在范围内使用key。并穿过它。
答案 1 :(得分:0)
我会说坚持一张地图。如果你遇到性能问题(我认为你不会),请用几张地图调查这个想法。接受http://wiki.c2.com/?PrematureOptimization已经为我节省了很多时间。
使用map.values()
获取所有值:循环显示一个大型或多个小型地图之间的性能应该没有显着差异。
使用map.get(xxx)
进行查找:如果密钥类的hash()
和equals()
方法很重,则性能可能会有所不同。但你的密钥是整数,所以(哈希和等于不重)所以应该没有问题。