Java 8 使用java 8 Files.lines stream将文件转换为二维数组
我有一些矩阵数据的文件: data.txt 我想从文件中读取它,并使用beautiful Files.lines stream将其转换为二维数组。 所以我的挣扎:Java 8 使用java 8 Files.lines stream将文件转换为二维数组,java-8,nio,Java 8,Nio,我有一些矩阵数据的文件: data.txt 我想从文件中读取它,并使用beautiful Files.lines stream将其转换为二维数组。 所以我的挣扎: int[][] arr = Files .lines(Paths.get("somepath/data.txt")) .map(item -> item .chars() .filter(i -> (char) i != ' '
int[][] arr = Files
.lines(Paths.get("somepath/data.txt"))
.map(item -> item
.chars()
.filter(i -> (char) i != ' '))
.collect(Collectors.toList()).toArray();
(至少两个dim列表)您需要将读取的每一行解析为int数组,然后将所有这些数组收集到多维数组中
int[][] arr =
Files.lines(Paths.get("somepath/data.txt"))
.map(item -> item.chars().filter(i -> (char) i != ' ').map(Character::getNumericValue).toArray())
.toArray(int[][]::new);
您还可以使用Pattern#splitAsStream
解析每一行:
.map(item -> Pattern.compile(" ").splitAsStream(item).mapToInt(Integer::parseInt).toArray())
请注意,还建议对
文件使用try with resources语句。lines
您需要将读取的每一行解析为int数组,然后将所有这些数组收集到多维数组中
int[][] arr =
Files.lines(Paths.get("somepath/data.txt"))
.map(item -> item.chars().filter(i -> (char) i != ' ').map(Character::getNumericValue).toArray())
.toArray(int[][]::new);
您还可以使用Pattern#splitAsStream
解析每一行:
.map(item -> Pattern.compile(" ").splitAsStream(item).mapToInt(Integer::parseInt).toArray())
请注意,还建议对
Files.lines
使用try with resources语句,我确信String::trim会更好though@PaulLemarchandString.trim()
将删除前导和尾随空格,但不会删除中间的空格,但会执行Pattern.compile(“”)
再说一遍,每一行的效率都不是很高。它可以很容易地预先提取到变量中。我很确定String::trim会更好though@PaulLemarchandString.trim()
将删除前导和尾随空格,但不会删除中间的空格,但会执行Pattern.compile(“”)
同样,在每一行中都不是很有效。它可以很容易地预先提取到变量中。