Java 无法使用多个筛选器解析符号流,但使用一个筛选器可以
我正在尝试在流中使用多个过滤器。一个过滤器可以正常工作,但当我添加另一个过滤器时,它无法解析符号流。它也无法解析contains或split,但所有这些都可以通过一个过滤器正常工作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(
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)Removestream
.2)forEach
是一个终端操作,即它结束流链。3)forEach
是无效的,因此它不会返回任何内容,因此您无法进一步链接。谢谢。这很有效,但是我如何根据它是分隔符1还是2进行拆分?而且它似乎也不符合我的要求因为我想筛选分隔符1还是分隔符2如果不是分隔符1,然后再筛选分隔符2。这个问题将重复谢谢!我会检查它。