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

在Java中使用迭代器有什么好处

李疏珂
2023-03-14
问题内容

我正在浏览以下代码示例:

public class GenericTest {

 public static void main (String[] args) {

  ArrayList<String> myList = new ArrayList<String>();
  String s1 = "one";
  String s2 = "two";
  String s3 = "three";

  myList.add(s1); myList.add(s2); myList.add(s3);
  String st;

  Iterator<String> itr = myList.iterator();

  while (itr.hasNext()) {
   st = itr.next();
   System.out.println(st);
  }
 }
}

我想知道使用Iterator接口的实现而不是使用普通的for-each循环有什么好处?

 for ( String str : myList ) {
  System.out.println(str);
 }

如果此示例不相关,那么当我们应该使用Iterator时会是一个好的情况吗?

谢谢。


问题答案:

for-each循环 与Java 5中引入的,所以它不是那么“老”。

如果只想迭代一个集合,则应为每个循环使用

for (String str : myList) {
   System.out.println(str);
}

但是有时hasNext()“普通的” 迭代器的 方法对于检查 迭代器 是否还有更多元素非常有用。

for (Iterator<String> it = myList.iterator(); it.hasNext(); ) {
   String str = it.next();
   System.out.print(str);
   if (it.hasNext()) {
      System.out.print(";");     
   }
}

您也可以调用it.remove()以删除next返回的最新元素。

ListIterator<E>提供双向遍历it.next()it.previous()

因此,它们不是等效的。两者都需要。



 类似资料:
  • 我知道这个问题在这个论坛上已经被问过好几次了。但我仍在发帖,因为没有一个答案看起来是具体的。专家们,你们能帮我理解什么时候使用迭代器吗。当我们有一个非常大的数据集时,我们是理想地使用它,还是当我们有大量数据要返回时,将其用作方法的返回类型?

  • 问题内容: 我正在尝试使用迭代器遍历我的日志列表中的列表。目标是搜索包含与新日志相同的电话号码,类型和日期的日志 但是,我在条件语句中得到了java.util.NoSuchElementException。有谁知道可能导致问题的原因? 我的密码 问题答案: 您在一次迭代中调用了很多次,迫使移至一个不存在的元素。 代替 用 每次调用时,它都会向前移动基础光标。

  • 为了方便的处理集合中的元素,Java中出现了一个对象,该对象提供了一些方法专门处理集合中的元素.例如删除和获取集合中的元素.该对象就叫做迭代器(Iterator)。

  • 问题内容: 在回答中,用户说了这样的话:“带有ArrayLists的迭代器的一个大用例是,当您要在迭代时删除元素时”。 即使使用Java中的ArrayList的remove方法也可以实现。我的问题是为什么我们在ArrayList中需要迭代器? 考虑以下代码: 谁能解释迭代器的意义?如果可以用代码解释我,那将是很棒的。 问题答案: 如前所述,迭代器用于迭代数组内容时要删除的内容。如果您不使用迭代器,

  • 为什么JSF2/Facelet的ui:repeat不接受java。util。迭代器的值?可以在迭代器后面隐藏如此多的实现和内存节约,因为长度不需要知道,所以拥有它是非常有用的。但是相反,我需要将迭代器转换为列表,并抛弃所有优点,以便ui:repeat。 可能有阶段、时间或可序列化的原因,但我对可用文档的浏览并没有给出这些原因。我们还没有使这一不可能成为可能的科学吗?