首页 > 解决方案 > 处理 CSV 文件以映射使用 Java 8

问题描述

我想将一个 CSV 文件收集到一个映射中,其中映射键是行的第一个字符串(行 [0]),映射值是行的其余部分的字符串数组,不包括行 [0]。

.collect(Collectors.toMap(line ->line[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);
        }

标签: javacsvjava-8streamreader

解决方案


或者使用这个:

.collect(Collectors
   .toMap(line -> line[0], line-> Stream.of(line).skip(1).toArray(String[]::new)));

推荐阅读