1 回答

TA贡献1895条经验 获得超7个赞
使用 中的流并没有真正获得任何好处savefromfile,因为您使用它就像使用普通的 for 循环一样。为了使代码更简洁一些,您可以完全摆脱局部变量,并且close()不需要调用 ,因为您已经在使用 try-with-resources 了。
private List<String[]> savefromfile(String filePath) throws IOException {
try (Stream<String> lines = Files.lines(Paths.get(filePath))) {
return lines
.map(line -> line.trim().split("\\s+"))
.collect(Collectors.toCollection(LinkedList::new));
}
}
我不知道你为什么要将对 double[][] 的解析分离到一个单独的方法中,因为你可以在你的流中使用映射来完成它:
private double[][] loadFromFile(String filePath) throws IOException {
try (Stream<String> lines = Files.lines(Paths.get(filePath))) {
return lines
.map(line -> line.trim().split("\\s+"))
.map(line -> new double[] {
Double.parseDouble(line[1]),
Double.parseDouble(line[2])
})
.toArray(double[][]::new);
}
}
对于性能,您只需要自己衡量使用较低级别的数据类型和循环是否值得增加复杂性。
添加回答
举报