У меня есть файл с миллионами строк, как показано ниже:
TIMESTAMP|COUNTRYCODE|RESPONSETIME|FLAG //HeaderStr
1544190995|US|500|Y //ValueStr
1723922044|GB|370|N //ValueStr
1711557214|US|750|Y //ValueStr
Мне нужно создать список следующим образом:
list<String one> = { TIMESTAMP|COUNTRYCODE|RESPONSETIME|FLAG
1723922044|GB|370|N
}
list<String two> = { TIMESTAMP|COUNTRYCODE|RESPONSETIME|FLAG
1544190995|US|500|Y
}
(т.е.) Первая строка будет заголовкомвсегда, к этому заголовку присоединяйте каждую строку файла и добавляйте ее в список для каждой строки.
Я пробовал следующее:
- Считайте файл, используя
BufferedReader
. - При чтении файла сохраните первую строку файла в строке.
- Используя для цикла, прочитайте оставшиеся строки (ValueStr) в файле.
- Внутри цикла for,создал новую строковую переменную и сохранил конкатенацию headerStr + ValueStr.
- Затем сохранил эту строку String в список для дальнейшего использования.
Грубый код на высоком уровне:
List<String> list = new list<String>();
BufferReader br = new BufferReader(new InputStream(file));
String headerValue = br.readLine();
for(String valueStr : br.nextLine()) {
String concatStr = headerValue + valueStr;
list.add(concatStr);
}
Проблема: У меня более миллиона строк в файле, и цикл for занимает слишком много времени.
Как эффективно обработать это сПотоки Java 8 или любой другой способ?