【发布时间】:2016-08-19 07:53:42
【问题描述】:
示例:-
列表 A 包含 N 个对象。
列表 B 包含 M 个对象。
列表 A 中的一个对象将仅匹配列表 B 中的一个对象。 匹配条件由我定义,假设它是项目编号、起始日期和区号。如果这些值匹配,那么我会将所有其他值从列表 B 的对象复制到列表 A 的对象。
解决方案:- 有两种解决方案,哪一种更好或更快?
Sol 1:- 只需执行一个 for 循环来匹配列表 A 中的列表 B 的对象。
Sol 2:-
步骤 1:- 从列表 B 创建一个 HashMap 。
步骤 2: - 使用该映射来获取匹配的记录并在列表 A 中设置值。
如果我创建一个地图,那么每个对象的键都是不同的。
假设如果列表 B 有 1000 个对象,那么如果我想创建 HashMap,就会有 1000 个不同的键。
【问题讨论】:
-
如果我理解正确的话,对于A的每一个元素,都需要在B中找到匹配的元素。如果B是一个列表,那么每次找都是O(N),使得整个过程O( N^2)。如果B是一个HashMap,每次find都是O(1),使得整个过程O(N)。
标签: java arraylist hashmap big-o