你如何在Java中以更好的方式编写这些循环?

Geo*_*Geo 3 java refactoring loops

我有一组对象,我想按照它们被迭代的顺序进行一些操作.在该操作被调用之后,我想对它们执行其他操作.基本上,代码看起来像这样:

for(int i = 0;i < myobj.size();i++)
{
   myobj.at(i).doSomething();
}

for(int i = 0;i < myobj.size();i++)
{
   myobj.at(i).doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)

这看起来有点难看.我怎么能把它重写成更好的东西?操作的顺序应该保持不变.

dav*_*veb 24

我不知道myobj是什么,但如果是Iterable,那么你可以使用foreach循环:

for (Foo foo : myobj) {
  foo.doSomething();
}

for (Foo foo : myobj) {
  foo.doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)

如果不是Iterable,那么这样做也可能有助于其他代码.


Ros*_*tin 6

如果绝对必须在不同的循环中进行这两个操作,请将循环重构为适当命名的方法,以便一目了然更容易理解:

createData();
saveData();
Run Code Online (Sandbox Code Playgroud)


Chs*_*y76 5

使用 foreach 循环:

for (MyObject currentObject : myobj) {
  currentObject.doSomething();
}

for (MyObject currentObject : myobj) {
  currentObject.doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)