微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在一个ArrayList中使用两个迭代器

如何解决在一个ArrayList中使用两个迭代器

您不应该这样做:

Iterator bIter = aIter;

因为在Java中没有复制构造函数等;bIter将引用相同的基础迭代器。

可以 通过以下方式使用ListIterator:

ListIterator aItr = aList.listIterator();
while (aItr.hasNext()) {
 int a = aItr.next();
 ListIterator bItr = aList.listIterator(aItr.prevIoUsIndex());
 while (bItr.hasNext()) {
   // ...
 }
}

但是,如果您认为ListIterator应该有一个copy()方法或类似的方法,我同意您的看法…

解决方法

编辑:感谢您的所有迅速答复。现在,我看到该作业将无效。从另一个线程,我读到Java中的迭代器比C
++中的迭代器功能强大得多。请问为什么在Java中使用迭代器?只是要替换“ for”循环?谢谢。

一些注意事项:

  • 第二个迭代器应从第一个迭代器之后的位置开始。
  • 我尝试从头开始遍历一个有序列表,然后在列表中找到一些对象,这些对象具有与aItr所指向的属性相似的属性。

我不介意使用两个“ for”循环,但是我知道Java在所有这些库中都非常强大。我只是好奇是否有比两个“ for”循环更好的方法。谢谢。

你好

我一直在使用C
++,但是我是Java的新手,所以请多多包涵。我尝试遍历带有两个迭代器的ArrayList。第一个迭代器遍历列表,第二个迭代器从第一个迭代器所指向的位置开始,一直到列表末尾。以下代码是我想要做的(虽然可能无效):

.......; //initialize aList here ......
Iterator aItr = aList.iterator();
while(aItr.hasNext()){
     int a = aItr.next();
     Iterator bItr = aItr; //-----> is it valid? Any bad consequence?
     while (bItr.hasNext()){
         ............; //do stuff
     }
}

将一个迭代器分配给另一个迭代器是否有效?如果没有,那么做我想做的最好的方法是什么?谢谢。

我知道它在C ++中是有效的,但对Java不确定,我在Google上搜索了很多,但是所有结果都使用迭代器来打印某些内容。非常感谢您的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。