【问题标题】:How do I find the number of times I've iterated through a foreach loop?如何找到我通过 foreach 循环迭代的次数?
【发布时间】:2014-01-05 17:36:01
【问题描述】:

如果我想找出在 java 中遍历 foreach 循环的次数,有没有比这更好的方法?

int i = 0;
for (Button button : levelBtns) {
    button = new Button(160, 40 + (i * 50), 100, 40);
    i++;
}

我知道我可以只使用普通的 for 循环并拥有一个迭代器,但我只是想知道是否有更优雅的方法可以使用 foreach 来做到这一点。在此先感谢 :)

编辑:正如 Jon Skeet 指出的那样,上面的代码将新按钮实例分配给迭代变量。哎呀。基于其他cmets,我相信最实用的东西是正常循环。这是我要使用的版本。感谢大家的帮助!

Button[] levelBtns = new Button[6];
for (int i = 0; i < levelBtns.length; i++) {
    levelBtns[i] = new Button(160, 40 + (i * 50), 100, 40);
}

【问题讨论】:

  • 需要循环内的信息还是循环后的信息?
  • 我相信您已经发布了最佳解决方案。但是,如果您担心当前正在进行的迭代,为什么不切换到传统的 for 循环。
  • 解决方案完全没问题。
  • 我假设levelBtns 是一个数组或某种Collection,因此迭代次数将是lvlButtons.lengthlvlButtons.size()
  • 无论如何,您的代码目前毫无意义,因为您正在为迭代变量分配一个新值......这没有任何用处。

标签: java loops foreach


【解决方案1】:

如果不是Iterable,而是Collection或者数组,你在迭代,并且需要循环后的迭代次数,使用Collection.size()方法或者length字段得到一个数组的大小,也就是迭代次数。

【讨论】:

    【解决方案2】:

    这是 foreach 循环的最佳解决方案。否则你可以使用类似的东西:

    for (int i = 0; i<levelBtns.lenght; i++) {
      levelBtns[i] = new Button(160, (i + 40) * 50, 100, 40);
    }
    

    【讨论】:

    • OP 已经提到I know I could just use a normal for loop and have an iterator,但我相信这是干净的解决方案。
    【解决方案3】:

    您的解决方案没问题,而且很一般。但一种可能的方式是

    可以通过get来获取计数器值,如果是List则levelBtns.size(),如果是数组则array.length

    【讨论】:

      猜你喜欢
      • 2019-05-23
      • 2011-09-07
      • 2023-03-15
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多