当前位置: 首页 > 面试题库 >

使用ArrayList或HashMap获得更好的速度

赵俊侠
2023-03-14
问题内容

我需要对象A的“列表”或“地图”。…此列表将从另一个ArrayList中添加。当idA的参数相等时,认为对象A等于另一个。

我的问题是我只想添加列表中不存在的对象。我不知道在这两种实现方式之间。使用ArrayList或HashMap

1. ArrayList:

for (A a: source) {if (! (a in ArrayList)) addToArrayList();}

2. HashMap <id, A>

for (A a: source) {hasmap.put (a.id, a)}

哪一个会增加添加大量对象(超过1000个对象或更多对象)的速度更快?我的问题是否有更好的模式???


问题答案:

首先,我要大胆地指出这是 两个完全不同的数据结构。 A List处理元素的线性表示,并Map处理键对值。

我的直觉是您正在尝试在a List和a 之间进行选择Set

如果您只想输入 唯一的 元素,或者更简洁地说,如果您只关心唯一的值,那么Set最好的选择是-也许HashSet您不关心订购。
它为基本操作(例如添加,删除,包含和大小)提供了O(1)时间。

(足够有趣的是,HashSet它由支持HashMap,但提供的接口类似于ArrayList。)



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

  • 问题内容: Java开发受到压力的一个模因总是使用ArrayList而不是Vector。不推荐使用vector。可能是正确的,但是Vector和Hashtable具有同步的优点。 我正在使用面向大量并发的应用程序,使用像Vector一样同步的对象是否有益?看来他们有自己的位置? 问题答案: Vector和Hashtable的问题在于它们仅在本地同步。它们不会在并发应用程序中中断(就像在损坏的数据中

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

  • 我最近开始学习流和Lambda表达式,但我的代码遇到了一个问题。

  • 这是我唯一的代码:

  • 问题内容: 假设我有一个数组数组 我想将其解析为对象。当我用 它似乎不起作用,我通过使用进行了工作 有一个更好的方法吗? 问题答案: 是的,请使用。 将允许你指定你真正想要的泛型类型,这有助于GSON找到类型来使用反序列化过程。 它使用这种宝石:。它是匿名类的事实使它成为的子类。相当于一个类 该方法的规范指出 如果超类是参数化类型,则返回的对象必须准确反映源代码中使用的实际类型参数。 如果指定 返