在迭代一个长列表时跳过项目,效率更高?

Fre*_*eit 3 java iteration

我正在使用一个java.util.List预计包含大约70k对象的东西.它是从有序的数据库查询构建的,因此每次都始终以相同的顺序.此列表正在作为长时间运行任务的一部分进行迭代,该任务可能因外部问题而停止.所以我需要在下次运行任务时跳过列表中的X元素.

出于各种原因,在构建列表的数据库查询中处理此问题不是一种选择.

在进行繁重的工作之前,跳过列表中X项的最有效方法是什么?

int skip = getNumberOfItemsToSkip();
int count = 0;
for(MyThing thing : bigList){
 if(count >= skip){
  //do stuff
 }
}
Run Code Online (Sandbox Code Playgroud)

要么

int skip = getNumberOfItemsToSkip();
int count = 0;
//does subList maintain the order????
List<MyThing> sublist = bigList.subList(skip, bigList.size() - 1);
for(MyThing thing : sublist){
  //do stuff
}
Run Code Online (Sandbox Code Playgroud)

还有另外一种方法吗?

Jus*_*KSU 6

在这种情况下,我不会使用增强的for循环.如果您通过索引访问,那么您可以简单地从一个范围开始和结束.

for(int i = getNumberOfItemsToSkip(); i < bigList.size(); i++) {
  Foo foo = bigList.get(i);
}
Run Code Online (Sandbox Code Playgroud)