Java 比较相同类型对象的两个列表
假设我有两个列表,现在listOld包含旧员工信息,listNew包含新员工信息Java 比较相同类型对象的两个列表,java,sorting,collections,arraylist,Java,Sorting,Collections,Arraylist,假设我有两个列表,现在listOld包含旧员工信息,listNew包含新员工信息 Employee { long lastUpdate; } List<Employee> listOld; //ArrayList List<Employee> listNew; 员工{ 长期更新; } 列表列表//ArrayList 新列表; 如何比较这两个列表并返回新列表,其中包含已添加的新员工列表、包含已删除的员工列表、包含上次更新已更改的员工的新列表 我只能考虑对列表进行
Employee {
long lastUpdate;
}
List<Employee> listOld; //ArrayList
List<Employee> listNew;
员工{
长期更新;
}
列表列表//ArrayList
新列表;
如何比较这两个列表并返回新列表,其中包含已添加的新员工列表、包含已删除的员工列表、包含上次更新已更改的员工的新列表
我只能考虑对列表进行迭代和比较,结果可能是几乎O(n2)次,这可以由任何util类更有效地完成吗?Apache的commons.collections库有一个CollectionUtils类。 该类提供用于集合检查的方法,包括交集、差集和并集
请参阅:Apache commons CollectionUtils可以解决前两种情况,如果你认为使用这个库是合适的。如果你关心性能:你应该意识到这些UTIL类通常仍然做你想做的事情——这意味着它不一定更快地使用Apache CAMONS,而不是考虑你自己的速度,如果你考虑速度的话,您可以先将列表转换为哈希表,然后对其使用集合库。这会把你从O(n^2)降到O(n)和O(n*ln(n))之间