单个Hashmap与几个Hashmaps:对性能的影响?

时间:2017-11-12 08:47:51

标签: java hashmap

我正在编写一个程序,其中所有密钥对输入的数据都将存储在HashMapsHashMap<Integer, List<String>>)。(它是读取重类型)

我需要决定是将其存储在单个大型 HashMap中,还是创建几个较小的 HashMaps

无论哪种方式,程序都会提供相同的输出,但我需要了解最佳实践(更好的性能)?

在性能方面哪个决策更好?

如果在多个HashMaps上选择单个HashMap会影响性能多少?

计划详情:

存储的总数据小于 20,000 。 关键是integer。 该值为List<String>

使用方法: 第一次输入data时,method会对其进行处理并提供Output

并将数据存储到光盘中,以便下次可以使用直接命令给出输出。

2 个答案:

答案 0 :(得分:0)

请参阅,如果您想存储数据(仅限商店)并且其中包含一种类型的元素,请使用ArrayList并一次性推送您的数据。

但如果您有密钥对值,请使用HashMap并立即全部推送。

性能方面,而不是每次为列表/地图获取内存不是一个好的解决方案,只需立即推送所有数据

还认为如果你的数据在不同的hashMap集中,你将如何遍历它?

在每个术语中,您都会知道将数据放入小型HashMap中并不是一个好的解决方案,因为没有必要使用它。

并且存储一个值并不是很重要,主要关注的是遍历HashMap以减少遍历的时间,你可以在范围内使用key。并穿过它。

答案 1 :(得分:0)

我会说坚持一张地图。如果你遇到性能问题(我认为你不会),请用几张地图调查这个想法。接受http://wiki.c2.com/?PrematureOptimization已经为我节省了很多时间。

使用map.values()获取所有值:循环显示一个大型或多个小型地图之间的性能应该没有显着差异。

使用map.get(xxx)进行查找:如果密钥类的hash()equals()方法很重,则性能可能会有所不同。但你的密钥是整数,所以(哈希和等于重)所以应该没有问题。