【发布时间】:2013-09-04 09:47:58
【问题描述】:
假设我有两个列表,现在 listOld 包含旧员工信息,listNew 包含新员工信息
Employee {
long lastUpdate;
}
List<Employee> listOld; //ArrayList
List<Employee> listNew;
如何比较两个列表并返回包含新员工列表的新列表、包含的新员工列表、删除的员工列表、包含 lastUpdate 已更改的员工的新列表?
我只能考虑迭代列表和比较,最终可能会花费几乎 O(n2) 时间,这可以通过任何 util 类来完成并且更有效吗?
【问题讨论】:
-
Apache commons CollectionUtils 可以解决前两种情况,如果您认为使用该库是合适的。
-
如果你关心性能:你应该知道这些 util 类通常仍然会做同样的事情——这意味着使用 apache commons 而不是自己实现它不一定更快跨度>
-
如果你考虑速度,你可以先将你的列表转换成哈希表,然后在上面使用集合库。这应该使您从 O(n^2) 下降到 O(n) 和 O(n*ln(n)) 之间的某个值
标签: java sorting collections arraylist