Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring批量随机访问一个文件,实现二进制搜索_Java_File_Spring Batch - Fatal编程技术网

Java spring批量随机访问一个文件,实现二进制搜索

Java spring批量随机访问一个文件,实现二进制搜索,java,file,spring-batch,Java,File,Spring Batch,我正在实施一个spring批处理程序,我的场景是 我有一个名为A的文件,它有一个名为RollNumber的唯一键域 卷号按排序顺序排列(ASC) 我想得到的行的rollNumber为:101 是否有可能在此基础上实现任何搜索算法 我可以使用Itemreader读取文件并找到行,但问题是我有100万条记录要处理,因此时间复杂度非常高。 i) 线性搜索需要更多的时间,因为文件有大量的数据 因为记录是按键排序的,实现这种事情的自然方式是,但我不确定是否可以使用springbatch Spring批处理

我正在实施一个spring批处理程序,我的场景是

  • 我有一个名为A的文件,它有一个名为RollNumber的唯一键域
  • 卷号按排序顺序排列(ASC)
  • 我想得到的行的rollNumber为:101
  • 是否有可能在此基础上实现任何搜索算法
  • 我可以使用Itemreader读取文件并找到行,但问题是我有100万条记录要处理,因此时间复杂度非常高。
    i) 线性搜索需要更多的时间,因为文件有大量的数据

  • 因为记录是按键排序的,实现这种事情的自然方式是,但我不确定是否可以使用
    springbatch

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

    事实上,
    FlatFileItemReader
    实现的
    ItemReader
    包含方法

    public void setLinesToSkip(int linesToSkip) {
        this.linesToSkip = linesToSkip;
    }
    
    但是仍然-跳过这些行之后,在这个
    Spring批处理过程中,这些行将不允许您返回或跳过另一行