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);
}
}
對于性能,您只需要自己衡量使用較低級別的數據類型和循環是否值得增加復雜性。
添加回答
舉報