我在Java类中有两个集合.第一个集合包含以前的数据,第二个集合包含前一个集合中的更新数据.
我想比较两个集合,但我不确定有效实现它的最佳方法.两个集合将包含相同数量的项目.
然后根据我想要执行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
根据你的评论,这个算法会做到这一点.它收集所有已更新的汽车.如果方法结果是空列表,则两个集合包含相同顺序的相同条目.该算法依赖于Car类型上equals()的正确实现!
public List findUpdatedCars(Collection oldCars, Collection newCars)
List updatedCars = new ArrayList();
Iterator oldIt = oldCars.iterator();
for (Car newCar:newCars) {
if (!newCar.equals(oldIt.next()) {
updatedCars.add(newCar);
}
}
return updatedCars;
}
标签:java,collections
来源: https://codeday.me/bug/20191001/1837639.html