Java 无法使用多个筛选器解析符号流,但使用一个筛选器可以

Java 无法使用多个筛选器解析符号流,但使用一个筛选器可以,java,java-stream,Java,Java Stream,我正在尝试在流中使用多个过滤器。一个过滤器可以正常工作,但当我添加另一个过滤器时,它无法解析符号流。它也无法解析contains或split,但所有这些都可以通过一个过滤器正常工作 try (Stream<String> lines = Files.lines(Paths.get(filePath))){ lines.stream .filter(line -> line.contains(delimiter)).forEach(

我正在尝试在流中使用多个过滤器。一个过滤器可以正常工作,但当我添加另一个过滤器时,它无法解析符号流。它也无法解析contains或split,但所有这些都可以通过一个过滤器正常工作

try (Stream<String> lines = Files.lines(Paths.get(filePath))){
        lines.stream
                .filter(line -> line.contains(delimiter)).forEach(line -> map.putIfAbsent(line.split(delimiter)[0], RomanNumerals.romanToInt(line.split(delimiter)[1]))
                .filter(line2 -> line.contains(delimiter2)).forEach(line2-> map.putIfAbsent(line2.split(delimiter2)[0], RomanNumerals.romanToInt(line2.split(delimiter2)[1]))
                        )

        );
    }
try(streamlines=Files.lines(path.get(filePath))){
行。流
.filter(line->line.contains(delimiter)).forEach(line->map.putIfAbsent(line.split(delimiter)[0],romanumericans.romanToInt(line.split(delimiter)[1]))
.filter(line2->line.contains(delimiter2)).forEach(line2->map.putIfAbsent(line2.split(delimiter2)[0],罗马数字.romanToInt(line2.split(delimiter2)[1]))
)
);
}
我将代码更新为

try (Stream<String> lines = Files.lines(Paths.get(filePath))){
        lines
                .filter(line -> line.contains(delimiter))
                .filter(line -> line.contains(delimiter2))
                .forEach(line-> map.putIfAbsent(line.split(delimiter)[0], RomanNumerals.romanToInt(line.split(delimiter)[1]))

        );
try(streamlines=Files.lines(path.get(filePath))){
线
.filter(行->行.contains(分隔符))
.filter(行->行.contains(分隔符R2))
.forEach(line->map.putIfAbsent(line.split(delimiter)[0],罗马数字.romanToInt(line.split(delimiter)[1]))
);

1)Remove
stream
.2)
forEach
是一个终端操作,即它结束流链。3)
forEach
是无效的,因此它不会返回任何内容,因此您无法进一步链接。谢谢。这很有效,但是我如何根据它是分隔符1还是2进行拆分?而且它似乎也不符合我的要求因为我想筛选分隔符1还是分隔符2如果不是分隔符1,然后再筛选分隔符2。这个问题将重复谢谢!我会检查它。