比较Java中的两个Collection
问题内容:
我在Java类中有两个Collections。第一个集合包含先前的数据,第二个集合包含先前集合的更新数据。
我想比较这两个集合,但是我不确定有效实现此目的的最佳方法。两个集合都包含相同数量的项目。
然后,基于每个集合中的carType相同,我要执行carType方法。
任何帮助表示赞赏
问题答案:
很难帮助,因为你没有告诉我们 如何 你想比较(大小相等)的集合。一些想法,希望能适合:
比较两个集合,如果它们包含相同顺序的相同对象
Iterator targetIt = target.iterator();
for (Object obj:source)
if (!obj.equals(targetIt.next()))
// compare result -> false
比较两个集合(如果它们以任意顺序包含相同的对象)
for (Object obj:source)
if (target.contains(obj))
// compare result -> false
在其他集合中查找已更改的元素
Iterator targetIt = target.iterator();
for (Object obj:source)
if (!obj.equals(targetIt.next())
// Element has changed
根据您的评论,此算法可以做到。它收集所有已更新的汽车。如果方法结果为空列表,则两个集合均包含相同顺序的相等条目。该算法 依赖
于正确实施equals()
的Car
类型!
public List<Car> findUpdatedCars(Collection<Car> oldCars, Collection<Car> newCars)
List<Car> updatedCars = new ArrayList<Car>();
Iterator oldIt = oldCars.iterator();
for (Car newCar:newCars) {
if (!newCar.equals(oldIt.next()) {
updatedCars.add(newCar);
}
}
return updatedCars;
}