可能重复:
How to most elegantly iterate through parallel collections?
Is there an accepted Java equivalent to Python's zip()?
我必须同时迭代两个对象集合,看看他们的成员是否相等。有没有办法使用计数器访问对象或执行与下面的for循环类似的操作?
Boolean compareCollection(Collection<Object> c1, Collection<Object> c2)
{
//something like -
for (Object ob1 : c1, Object ob2 : c2){
//check if ob1.val == ob2.val
}
return true;
}
答案 0 :(得分:2)
这样的事情:
public static boolean compareCollection(Collection<Object> c1, Collection<Object> c2) {
if (c1 == null)
return c2 == null;
else if (c2 == null || c1.size() != c2.size())
return false;
Iterator<Object> it1 = c1.iterator();
Iterator<Object> it2 = c2.iterator();
while (it1.hasNext()) {
Object o1 = it1.next();
Object o2 = it2.next();
if (!o1.equals(o2))
return false;
}
return true;
}
当然,您必须使用正确的类型(我猜不只是Object
)对集合进行参数化并进行适当的比较:
if (!o1.val.equals(o2.val))
答案 1 :(得分:1)
你能使用实现类似逻辑的List.equals()
吗?
此外,commons-collections ListUtils.isListEquals
可能是您想要的:
http://commons.apache.org/collections/api-release/index.html