Java 8 流条件处理
2022-09-01 03:47:31
我感兴趣的是将一个流分成两个或多个子流,并以不同的方式处理元素。例如,一个(大的)文本文件可能包含 A 类型的行和 B 类型的行,在这种情况下,我想执行如下操作:
File.lines(path)
.filter(line -> isTypeA(line))
.forEachTrue(line -> processTypeA(line))
.forEachFalse(line -> processTypeB(line))
前一个是我试图抽象情况。实际上,我有一个非常大的文本文件,其中每行都针对正则表达式进行测试;如果行通过,则处理它,而如果它被拒绝,那么我想更新一个计数器。对被拒绝的字符串的进一步处理是我不简单地使用.filter
是否有任何合理的方法可以对流执行此操作,或者我是否必须回退到循环?(我希望它也并行运行,所以流是我的首选)。