一尘不染

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

java

我需要对象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个对象或更多对象)的速度更快?我的问题是否有更好的模式???


阅读 445

收藏
2020-12-03

共1个答案

一尘不染

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

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

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

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

2020-12-03