如何同时迭代两个对象集合?

时间:2011-12-28 22:05:04

标签: java

  

可能重复:
  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;
}

2 个答案:

答案 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