春季批处理对文件进行随机访问以实施二进制搜索

时间:2019-02-06 08:41:58

标签: java file spring-batch

我正在实施春季批处理程序,我的情况是

  1. 我有一个名为 A 的文件,该文件具有一个名为RollNumber的唯一键字段
  2. rollNumber按排序顺序(ASC)
  3. 我想获取具有rollNumber的行:101
  4. 是否可以在此上实现任何搜索算法。
  5. 我能够使用Itemreader读取文件并找到行,但问题是我有100万条记录要处理,所以时间复杂度很高。
    i)由于​​文件中包含大量数据,因此进行线性搜索会花费更多时间

1 个答案:

答案 0 :(得分:0)

由于记录是按键排序的,因此实现此操作的自然方法是Binary Search,但我不确定是否可以使用Spring Batch

Spring Batch的意义是读取整个文件并以某种方式处理它,而不是“跳入”文件并执行一些特定的工作。对于此类操作,您应该实现自己的机制(但是,如果必须在Tasklet进程的范围内执行此操作,则可以在Spring Batch实例中实现)。

事实是FlatFileItemReader的{​​{1}}实现包含方法

ItemReader

但仍然-跳过这些行后,您将无法在此public void setLinesToSkip(int linesToSkip) { this.linesToSkip = linesToSkip; } 过程中返回或跳过其他行