我有两个列表a = {1,2,2,5,6,6,6,7}b = {2,3,3,6,6,6,8}
我想获得等效元素,在这种情况下,输出应为2 *(2 = 2)和9 *(6 = 6)这是我的代码的一部分

    Iterator aIt = a.iterator();
    Iterator bIt = b.iterator();
    Iterator tempIt = b.iterator();

    int aNode = (Integer)aIt.next();
    int bNode = (Integer)bIt.next();
    Boolean isEquals = false;

    while(aIt.hasNext()||bIt.hasNext()){
        while(aNode<bNode){
            aNode = (Integer)aIt.next();
        }
        while(aNode>bNode){
            bNode = (Integer)bIt.next();
        }
        while(aNode==bNode){
            tempIt = bIt;
            while(aNode==bNode){
                System.out.println(aNode + " = " + bNode);
                bNode = (Integer)tempIt.next();
            }
            aNode = (Integer)aIt.next();
            tempIt = bIt;
            bNode = (Integer)tempIt.next();
            isEquals = true;
        }
        if(isEquals){
            bIt = tempIt;
            isEquals = false;
        }
    }


但是,在运行代码之后,我意识到我传递的是bIttempIt的引用,而不是内容。如果我真的想使用迭代器来实现这一目标,有什么解决方案吗?非常感谢!

最佳答案

听起来您好像要克隆迭代器,这在Java中是不支持的(clone()方法是私有的)。
只是要注意,迭代器不包含数据,您应该将其视为列表的接口。因此,迭代器可能不是这里最理想的解决方案。

10-07 16:34