Требование:
Считайте, что 1 файл (большой файл размером 5 МБ, состоящий из 200K записей) имеет список номеров рулонов. Рассмотрим другой файл (такой же большой файл), состоящий из деталей номеров рулонов в столбцах. Например:
file1:
Roll-Number
file2:
Roll-Number Name Course HOD Subject
Обратите внимание, что приложение Spring Batch разработано с помощью ItemReader, ItemProcessor и ItemWriter .
Итак, FlatFileItemReader используется для чтения записи из file1 в первую очередь. С помощью Roll-Number, полученного из файла file1, мне нужно найти в файле file2 совпадение в столбце Roll-Number, и, если он найден, мне нужно получить все детали (другие значения столбца) этой записи и обработать их.
Но я думаю, что это будет временная сложность O (n ^ 2), поскольку для одной записи из файла1 мне нужно искать весь файл2 (который может быть большим файлом) до конца, в худшем случае каждый раз, когда файл1 read.
Это хорошая идея - прочитать весь файл2 и сохранить его в памяти в виде переменной (например, переменной HashSet). Поиск в переменной HastSet будет быстрее, чем поиск в файле). Но потребление памяти будет больше.
Любые другие предложения по более быстрому поиску.