Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8 使用java 8 Files.lines stream将文件转换为二维数组_Java 8_Nio - Fatal编程技术网

Java 8 使用java 8 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 != ' '

我有一些矩阵数据的文件:

data.txt

我想从文件中读取它,并使用beautiful Files.lines stream将其转换为二维数组。 所以我的挣扎:

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@PaulLemarchand
String.trim()
将删除前导和尾随空格,但不会删除中间的空格,但会执行
Pattern.compile(“”)
再说一遍,每一行的效率都不是很高。它可以很容易地预先提取到变量中。我很确定String::trim会更好though@PaulLemarchand
String.trim()
将删除前导和尾随空格,但不会删除中间的空格,但会执行
Pattern.compile(“”)
同样,在每一行中都不是很有效。它可以很容易地预先提取到变量中。