我有两个列表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;
}
}
但是,在运行代码之后,我意识到我传递的是
bIt
对tempIt
的引用,而不是内容。如果我真的想使用迭代器来实现这一目标,有什么解决方案吗?非常感谢! 最佳答案
听起来您好像要克隆迭代器,这在Java中是不支持的(clone()
方法是私有的)。
只是要注意,迭代器不包含数据,您应该将其视为列表的接口。因此,迭代器可能不是这里最理想的解决方案。