gst*_*low 8 java java-stream java-11
我有以下代码:
Stream<String> lines = reader.lines();
Run Code Online (Sandbox Code Playgroud)
如果第一个字符串等于"email"我要从流中删除第一个字符串。对于流中的其他字符串,我不需要此检查。
我怎么能做到?
当然,我可以将其转换为列表,然后使用旧式进行循环,但是进一步,我需要再次播放流。
虽然在从阅读器构造出一行流之后,阅读器将处于未指定状态,但在执行此操作之前,阅读器处于定义良好的状态。
所以你可以做
String firstLine = reader.readLine();
Stream<String> lines = reader.lines();
if(firstLine != null && !"email".equals(firstLine))
lines = Stream.concat(Stream.of(firstLine), lines);
Run Code Online (Sandbox Code Playgroud)
我认为这是最干净的解决方案。请注意,这与Java 9不同dropWhile,如果Java 9相匹配,它们将掉落多行。