小编ark*_*234的帖子

如何使用 Java 8 Stream 将 csv 转换为地图

我正在尝试创建一个简单的解析实用程序,它可以转换一个两列的 CSV 文件并将其放入地图中。

public Map<String, String> getMapFromCSV(final String filePath) throws IOException {
    return Files.lines(Paths.get(filePath))
                .map(line -> line.split(","))
                .collect(Collectors.toMap(line -> line[0], line -> line[1]));
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在创建一个字符串流,用逗号分隔每一行并将其转换为字符串数组,最后将键映射到索引 0,将值映射到索引 1。

@Test
public void testGetMapFromCSV() throws IOException{
    actual = util.getMapFromCSV(filePath).get("AL");
    expected = "ALABAMA";

    assertEquals(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我运行此测试时,实际值为空。我排除了无效的 filePath,因为它在另一个单元测试中工作正常,并且键值存在于 CSV 中。我已经盯着它看了几个小时,想也许这里有人可以指出我的错误。

另外,我对 Java 8 还很陌生,所以如果有人知道更好/更简洁的写法,我会很感激反馈。

java csv lambda java-8 java-stream

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

标签 统计

csv ×1

java ×1

java-8 ×1

java-stream ×1

lambda ×1