首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个ArrayList中使用两个迭代器

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

Stack Overflow用户
提问于 2011-05-25 15:15:18
回答 5查看 14.1K关注 0票数 4

编辑:谢谢你所有的提示回复。现在我看到作业不管用了。从另一个线程中,我看到Java中的迭代器比C++中的迭代器强大得多。那么,我可以问为什么在Java中使用迭代器吗?就为了替换"for“循环?谢谢。

一些注意事项:

  • 第二个迭代器应该从位置开始,然后找到第一个迭代器。
  • 我试着从一开始就开始执行一个有序列表,在列表中找到一些对象,这些对象具有与aItr所指出的属性相似的属性。

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

嗨,

我一直在使用C++,但是我对Java还不熟悉,所以请容忍我。我尝试用两个迭代器循环一个ArrayList。第一个迭代器通过列表,第二个迭代器从第一个迭代器指向的位置开始,一直到列表的末尾。下面的代码是我想要做的(也许无效):

代码语言:javascript
运行
复制
.......; //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不确定,我在googled上搜索了很多,但是所有的结果都使用迭代器来打印东西。非常感谢你的帮助。

EN

Stack Overflow用户

回答已采纳

发布于 2011-05-25 15:16:53

你不该这样做:

代码语言:javascript
运行
复制
Iterator bIter = aIter;

因为在Java中没有复制、构造函数等;bIter将是对相同底层迭代器的引用。

您可以这样使用ListIterator:

代码语言:javascript
运行
复制
ListIterator aItr = aList.listIterator();
while (aItr.hasNext()) {
 int a = aItr.next();
 ListIterator bItr = aList.listIterator(aItr.previousIndex());
 while (bItr.hasNext()) {
   // ...
 }
}

但是如果你认为ListIterator应该有一个拷贝()方法或者类似的东西,我同意你的观点.

票数 8
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6126763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档