当前位置: 首页 > 面试题库 >

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

岑叶秋
2023-03-14
问题内容

编辑:感谢您的所有迅速答复。现在,我看到该作业将无效。从另一个线程,我读到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上搜索了很多,但是所有结果都使用迭代器来打印某些内容。非常感谢您的帮助。


问题答案:

您不应该这样做:

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()方法或类似的方法,我同意您的看法…



 类似资料:
  • 我想在HashMap中搜索重复项。目前这是我的HashMap:

  • 问题内容: 我有一个像(669256.02,6117662.09,669258.61,6117664.39,669258.05,6117665.08)的集合需要迭代 将打印 我在Python 3.3 btw上 问题答案: 您可以使用迭代器:

  • 本文向大家介绍在Java中迭代ArrayList,包括了在Java中迭代ArrayList的使用技巧和注意事项,需要的朋友参考一下 Java中的Iterator用于遍历集合中的每个元素。使用它遍历,获取每个元素,或者甚至可以从ArrList中删除元素。要使用迭代器遍历集合的内容,请首先通过调用集合的iterator()方法来获得一个迭代器,使其到达集合的开头。在那之后,建立一个循环来调用hasNe

  • 如何才能做到这一点呢? 谢谢大家。

  • 本文向大家介绍如何在C#中使用一个foreach语句迭代两个列表或数组?,包括了如何在C#中使用一个foreach语句迭代两个列表或数组?的使用技巧和注意事项,需要的朋友参考一下 设置两个数组。 使用该方法可以并行处理两个数组。 上面分别获取了具有int和string元素的两个数组。 现在,使用foreach迭代两个数组- 示例 输出结果