【问题标题】:Problem with iterator variable, Oracle docs迭代器变量的问题,Oracle 文档
【发布时间】:2018-10-30 09:23:29
【问题描述】:

我正在通过Oracle docs 为For-Each Loop 并在那里提到它

迭代器变量在每个循环中出现 3 次:即有两次出错的机会。

为什么有两次出错的机会?

【问题讨论】:

  • 我已经编辑了问题
  • 表示有一个标识符被使用了3次。第二次和第三次使用都必须与第一次匹配,否则您的程序将无法运行。

标签: java foreach


【解决方案1】:

与这段代码sn-p有关:

void cancelAll(Collection<TimerTask> c) {
    for (Iterator<TimerTask> i = c.iterator(); i.hasNext(); )
        i.next().cancel();
}

这就是说,当你在声明之后引用迭代器(i.hasNext();i.next())时,你可能会不小心引用范围内的其他迭代器变量,或者省略一个,或者调用i.next()超过一次在循环中,或类似的东西。

相比之下,for-each 循环:

void cancelAll(Collection<TimerTask> c) {
    for (TimerTask t : c)
        t.cancel();
}

你没有引用迭代器(你不能引用它),所以你不能犯同样的错误。

【讨论】:

  • 明明你有水晶球,你为什么不先改进问题?
  • @KrzysztofCichocki 我不确定你在问什么。
  • 哪一部分?既然知道题写错了,为什么不先提高质量呢?
猜你喜欢
  • 1970-01-01
  • 2012-07-18
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 2011-02-15
相关资源
最近更新 更多