我在一个 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<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;
}
关于java - 在 Java 中比较两个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085353/