我试图读取一个看起来像这样的简单文本文件:
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) 我必须根据相同位置的值对数组进行排名。例如:
值 = {5, 1, 4 }
生成的排名数组将为:{1, 3 ,2}
如何在不对数组进行排序的情况下实现此目的?