Я использую такой код для обработки файла, состоящего из нескольких строк:
BufferedReader reader = ...
reader.lines().forEach(Same common Action)
Это работает отлично, если каждая строка должна обрабатываться одинаково. Но иногда может быть несколько разных действий.
Например, пусть первая строка - это заголовок, а остальные строки - содержимое. Для первой строки я хочу выполнить Action1
, а для остальных - Action2
.
В стиле Java 7 я бы сделал что-то вроде этого:
String line;
boolean first = true;
while ( (line = reader.readLine()) != null) {
if (first) {
action1(line);
first = false;
} else {
action2(line);
}
}
Но это сложный и уродливый, и он вообще не использует потоки. Как я могу сделать это с идиоматическим способом с использованием Java 8 потоков?