Java 8 Stream - чтение файла и сохранение каждой строки в список <String> - PullRequest
0 голосов
/ 22 декабря 2019

У меня есть файл с миллионами строк, как показано ниже:

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 или любой другой способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...