Я пишу парсер для файла в Java 8. Файл читается с использованием Files.lines
и возвращает последовательный Stream<String>
.
Каждая строка сопоставляется с объектом данных Result
следующим образом:
Result parse(String _line) {
// ... code here
Result _result = new Result().
if (/* line is not needed */) {
return null;
} else {
/* parse line into result */
return _result;
}
}
Теперь мы можем сопоставить каждую строку в потоке с соответствующим результатом:
public Stream<Result> parseFile(Path _file) {
Stream<String> _stream = Files.lines(_file);
Stream<Result> _resultStream = _stream.map(this::parse);
}
Однако поток теперь содержит значения null
, которые я хочу удалить:
parseFile(_file).filter(v -> v != null);
Как я могу совместить операцию карты/фильтра, как я уже знаю в parseLine/_stream.map
, если нужен результат?
return Files.line(_file).map(this::parse).filter(v -> v != null);
? - person user2336315   schedule 06.11.2014