我有一个从文件中读取的以下线路
1 2 4.5
1 6 3 5.5 5.3 6
1 7.2 5 7
如果仅考虑整数,我如何在单个列表中收集这些行? (请注意,在每一行中,数字由一个或多个空格分隔)
这是我尝试过的,但是这给了我一个包含所有整数元素的列表。
list = reader.lines()
.map(m -> m.split("\\n"))
.flatMap(Arrays::stream)
.map(m -> m.split("\\s+"))
.flatMap(Arrays::stream)
.filter(f -> !f.contains("."))
.map(Integer::parseInt)
.collect(Collectors.toList());
答案 0 :(得分:6)
reader.lines()
.map(line -> Arrays.stream(line.split("\\s+"))
.filter(f -> !f.contains("."))
.map(Integer::parseInt)
.collect(Collectors.toList())
.collect(Collectors.toList())
答案 1 :(得分:3)
这应该可以解决问题。
list = reader.lines()
.map(line -> Arrays.stream(line.split("\\s+"))
.filter(number -> !number.contains("."))
.map(Integer::parseInt)
.collect(Collectors.toList()))
.collect(Collectors.toList());
您可能还想过滤空行:
list = reader.lines()
.map(line -> Arrays.stream(line.split("\\s+"))
.filter(number -> !number.contains("."))
.map(Integer::parseInt)
.collect(Collectors.toList()))
.map(l -> !l.isEmpty())
.collect(Collectors.toList());