使用 Java 处理 CSV 文件以映射 <String,String[]> 8
Processing a CSV File to Map<String,String[]> using Java 8
我想将 CSV 文件收集到地图中,地图键是行的第一个字符串(行 [0]),地图值是行的其余部分的字符串数组,不包括行 [0] ].
.collect(Collectors.toMap(行 ->行[0], ));
不确定要输入什么作为 .toMap 方法的第二个参数来实现此目的
public Map<String,String[]> readFile() {
try {
Path path = Paths.get("src/CSV/map.csv");
BufferedReader reader = new BufferedReader(Files.newBufferedReader(path, Charset.forName("UTF-8")));
return reader.lines()
.map(line -> line.split(","))
.collect(Collectors.toMap(line ->line[0], ));
} catch (IOException e) {
throw new UncheckedIOException(e);
}
使用Arrays.copyOfRange
:
.collect(Collectors.toMap(line -> line[0], line->Arrays.copyOfRange(line, 1, line.length)));
或者使用这个:
.collect(Collectors
.toMap(line -> line[0], line-> Stream.of(line).skip(1).toArray(String[]::new)));
我想将 CSV 文件收集到地图中,地图键是行的第一个字符串(行 [0]),地图值是行的其余部分的字符串数组,不包括行 [0] ].
.collect(Collectors.toMap(行 ->行[0], ));
不确定要输入什么作为 .toMap 方法的第二个参数来实现此目的
public Map<String,String[]> readFile() {
try {
Path path = Paths.get("src/CSV/map.csv");
BufferedReader reader = new BufferedReader(Files.newBufferedReader(path, Charset.forName("UTF-8")));
return reader.lines()
.map(line -> line.split(","))
.collect(Collectors.toMap(line ->line[0], ));
} catch (IOException e) {
throw new UncheckedIOException(e);
}
使用Arrays.copyOfRange
:
.collect(Collectors.toMap(line -> line[0], line->Arrays.copyOfRange(line, 1, line.length)));
或者使用这个:
.collect(Collectors
.toMap(line -> line[0], line-> Stream.of(line).skip(1).toArray(String[]::new)));