【问题标题】:How do I convert this for loop into enhanced for loop?如何将此 for 循环转换为增强型 for 循环?
【发布时间】:2017-12-05 10:44:55
【问题描述】:

我正在努力从这个常规 for 循环中增强 for 循环。我希望String ArrayList 的每个元素都等于它的值+“完成”

for (int i = 0; i < stringList.size(); i ++)
{
    stringList.set(i, stringList.get(i) + " done");
}

谢谢你帮助我。

【问题讨论】:

  • 您不能/不应该用它替换特定位置的值。如果你只做一个List.get,这很好,但List.set 是个问题。
  • 为什么你想用增强的for替换上面的代码?
  • @T.J.Crowder 就在这里,XY 问题的经典例子...

标签: java loops arraylist


【解决方案1】:

您不能为此使用增强的 for 循环。

要么继续使用您现有的代码(这对于RandomAccess 列表很好),要么使用List.replaceAll

stringList.replaceAll(s -> s + " done");

或者,如果您仍然停留在 Java 8 之前的版本,请使用 Java 8 Javadoc 中的代码:

 final ListIterator<String> li = stringList.listIterator();
 while (li.hasNext()) {
     li.set(li.next() + " done");
 }

【讨论】:

    【解决方案2】:

    可以将其替换为增强的for,但这并不是一个很好的用途:

    int i = 0;
    for (String s : stringList)
    {
        stringList.set(i++, s + " done");
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多