我有一个CSV文件,第一行包含标题。因此,我认为使用Java 8流是完美的选择。
try (Stream<String> stream = Files.lines(csv_file) ){
stream.skip(1).forEach( line -> handleLine(line) );
} catch ( IOException ioe ){
handleError(ioe);
}
能否取出第一个元素,对其进行分析,然后调用forEach方法?类似于:
stream
.forFirst( line -> handleFirst(line) )
.skip(1)
.forEach( line -> handleLine(line) );
此外: 我的CSV文件包含大约1k行,我可以并行处理每一行以加速处理。但第一行除外。我需要第一行来初始化项目中的其他对象:/ 因此,也许快速打开BufferedReader,读取第一行,关闭BufferedReader,然后使用并行流是一个好方法?
findFirst().get()
替换你的伪代码forFirst
,然后使用它进行操作,接着使用skip
和forEach
。 - ZirconfindFirst()
是一个终端操作,使用之后你将无法继续使用该流。 - shmosel