当前位置: 首页 > 知识库问答 >
问题:

HashMap和ArrayList的Java速度比较

经国安
2023-03-14

我想知道Hashmap和ArrayList中的搜索元素有什么比较吗?我遇到的情况如下:我将有少量的元素(通常4-6个,最多10个)。我有这样一个元素的整数id,我将得到很多调用,这些调用将使用Id搜索元素并在这个元素上执行一些方法。这看起来是hashmap的一个很好的用例,但是我开始怀疑像ArrayList这样的线性集合在这里会不会更好。例如因为CPU缓存。为了在地图上使用搜索,我需要自动装箱来从原始数据中创建整数。对于这种情况,更好的问题是进行线性搜索和原始整型比较,还是坚持hashmap?

共有1个答案

毛博
2023-03-14

如果你的 ID 不是基于索引的,那么数组列表 #get 将是 O(n)(你必须迭代元素),而哈希映射 #get 将是 O(1)

 类似资料:
  • 我正在尝试将ArrayList转换为Treemap,所以我编写了一个比较各种方法的基准: 1)并行流中的toMap 2)toMap在流中 3)流中forEach 主 大小为10_000的输出如下 “for loop”与预期一样是最慢的 回到正题,为什么当arraylist列表很大时,for each in parallel steam会失败? 运行i7 2670QM,因此线程池大小应为8

  • 我需要一个“列表”或“地图”,。。。此列表将从另一个ArrayList中添加。当A的参数等于时,对象A被视为等于另一个对象。 我的问题是我只想添加一个列表中不存在的对象。我想知道这两种实施方案之间的区别。使用ArrayList或HashMap 哪种方法可以更快地添加大量对象(超过1000个对象,或更多对象)有更好的模式解决我的问题吗???

  • 问题内容: 我需要对象A的“列表”或“地图”。…此列表将从另一个ArrayList中添加。当A的参数相等时,认为对象A等于另一个。 我的问题是我只想添加列表中不存在的对象。我不知道在这两种实现方式之间。使用ArrayList或HashMap 哪一个会增加添加大量对象(超过1000个对象或更多对象)的速度更快?我的问题是否有更好的模式??? 问题答案: 首先,我要大胆地指出这是 两个完全不同的数据结

  • 问题内容: 可有人请提供创建一个Java的例子和上飞?因此,不是执行or ,而是在类实例化时实际为数组/哈希提供种子数据? 例如,类似于PHP的示例: 问题答案:

  • 问题内容: 我想知道与ArrayList相比,Java HashMap的内存开销是多少? 更新: 我想提高搜索相同对象的大包装(600万以上)的特定值的速度。 因此,我正在考虑使用一个或多个HashMap而不是使用ArrayList。但是我想知道HashMap的开销是多少。 据我了解,密钥不是存储的,只是密钥的哈希,因此它应该类似于 对象的哈希大小+一个指针 。 但是使用什么哈希函数?是对象提供的