小编Gor*_*man的帖子

在Java 8中读取文件以获取2d数组

我试图读取一个看起来像这样的简单文本文件:

operationName1 Value
operationName2 Value
Run Code Online (Sandbox Code Playgroud)

操作名称是字符串(只有两种可能的操作),值是整数.

我的目标是将数组作为输出,如下所示:

[[1,10],[2,5]]
Run Code Online (Sandbox Code Playgroud)

在指定的数组中,我将operationName1转换为1,将operationName2转换为2,并使用相应的值.

这是我试过的:

try{
    Path path = Paths.get("./myFile.txt");
    String[][] array = Files.lines(path)
                    .map(s -> s.split("\\s+", 2))
                    .map(a -> new String[]{a[0], a[1]})
                    .toArray(String[][]::new);

    System.out.println(Arrays.toString(array));
    }catch(IOException e){  
}
Run Code Online (Sandbox Code Playgroud)

我没有在这段代码中将名称更改为整数,我只是尝试获取一个字符串数组,我可以打印以查看我是否正确读取文件.

我的输出如下:

[[Ljava.lang.String;@682a0b20, [Ljava.lang.String;@3d075dc0, [Ljava.lang.String;@214c265e, [Ljava.lang.String;@448139f0, [L ...
Run Code Online (Sandbox Code Playgroud)

我只得到一个流而不是字符串?

路径是正确的,我可以使用标准语法正常读取文件.但我真的很想理解从右脚开始的语法,因为理解它似乎很有帮助.

我的问题:您是否知道如何纠正这个问题,或者更好的是,如何使用最新语法获得预期输出?(如果可能,Java 8?)

PS:我也看到了这种语法,但我不知道如何完成它以获得我的结果,我不确定这是好还是坏(但它似乎是Java 8).

Files.lines(Paths.get(ClassLoader.getSystemResource("myFile.txt")
    .toURI())).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

java arrays file java-8

1
推荐指数
1
解决办法
923
查看次数

java中如何根据数组的值对数组进行排序

我必须根据相同位置的值对数组进行排名。例如:

值 = {5, 1, 4 }

生成的排名数组将为:{1, 3 ,2}

如何在不对数组进行排序的情况下实现此目的?

java arrays

-1
推荐指数
1
解决办法
5802
查看次数

标签 统计

arrays ×2

java ×2

file ×1

java-8 ×1