【问题标题】:Can someone explain this line [duplicate]有人可以解释这一行吗[重复]
【发布时间】:2017-11-25 10:22:28
【问题描述】:

你好,我正在努力理解一个程序和一个给我带来麻烦的行。你能解释一下这条线的构造吗,因为我从来没有见过这样的“For”

for (Iterator<IBaseVO> itMachine = machinesSelected.iterator(); itMachine.hasNext();) {
            MachineVO mach = (MachineVO) itMachine.next();
            idsMachines.add(mach.getMchId());
        }

谢谢你

【问题讨论】:

  • 它给你带来了什么麻烦? ;)
  • 我不明白为什么它必须“;”在第一行
  • 显然是重复的谢谢你我关闭
  • for (initialize itMachine; the condition itMachine.hasNext(); no incremental, just loop) {...}
  • 语句的原因有:for(初始化;终止;增量){语句}

标签: java for-loop iterator


【解决方案1】:

for 循环可以有 3 个参数,但这不是必需的。

通常是这样的

  1. 说明
  2. 布尔值
  3. 说明

第一个和第三个可以安全地省略。

所以这里是用于初始化迭代器对象的第一个指令槽。

第二个指令槽用于查看迭代器中是否有新项。

第三个插槽不需要,因此省略。

这和

一样
Iterator<IBaseVO> itMachine = machinesSelected.iterator();
while (itMachine.hasNext()) {
            MachineVO mach = (MachineVO) itMachine.next();
            idsMachines.add(mach.getMchId());
        }

【讨论】:

  • "第一个和第三个可以安全地省略。"这三个都可以省略。 for (;;) {} 是合法的。
  • 我知道这是合法的,但它不安全,除非你打破常规;
  • 虽然表达式的存在并不能立即使其安全。 for(;true;) {} 就像“不安全”一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多