Spring Batch ItemReader - 维护指针或从列表中删除项目?

时间:2017-02-03 22:14:29

标签: java spring spring-batch

我刚开始使用Spring Batch,并想知道维护ItemReader中要读取的项目列表的最佳做法是什么。我看到的例子有:

private static List<Resource> items = new LinkedList<Resource>();
private static int index = 0;

private void initialize(){
    items.add(new Resource());
}

public Model read(){
   if(index < items.size())
      return new Model(items.get(index++));
   return null;
} 

这种方法与不使用索引并简单缩短列表有什么好处? E.g:

public Model read(){
   if(items.size() > 0)
      return new Model(items.remove(0));
   return null;
}

1 个答案:

答案 0 :(得分:2)

我认为第二种方法存在以下缺点:

  • items在一次迭代后仍然无法使用。
  • 可能会慢一些,具体取决于List的具体类型。如果它是LinkedList,事情应该没问题。但对于ArrayList,每个remove都会移动很多元素。