【问题标题】:Comparing two Lists of same type of Objects比较相同类型对象的两个列表
【发布时间】: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


【解决方案1】:

Apache 的 commons.collections 库有一个 CollectionUtils 类。 该类提供了Collection检查的方法,包括交集、差集和并集。

见:http://commons.apache.org/proper/commons-collections/javadocs/api-3.2.1/index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2017-05-17
    相关资源
    最近更新 更多