【发布时间】:2017-10-16 04:48:37
【问题描述】:
我正在尝试使用 simpleflatmapper 将 CSV 行收集为字符串数组:
try (Reader in = Files.newBufferedReader("path")) {
return org.simpleflatmapper.csv.CsvParser
// .mapTo(String[].class)
.stream(in)
// .parallel()
// .flatMap(Arrays::stream)
.map(line -> {return new ArrayList<>(Arrays.asList(line));})
// .map(Arrays::asList)
.collect(Collectors.toList());
} catch (Exception e) {
e.printStackTrace();
}
在我调试时,line 是String[],但值是整行(一个元素)而不是许多字符串(许多单元格)。如何获得单元格数组?
CSV 文件没有什么特别之处。例如:
a\t b\t 1\t 2
x\t y\t 3\t 4
我在这段代码.map(line -> {return new ArrayList<>(Arrays.asList(line));}) 中看到的问题是line 包含一个字符串值,它是整行(带有制表符、空格等)而不是许多字符串(每个字符串是每个字符串的值细胞)。
我想要的整个结果是List<List<String>>(行列表)。每行是List<String>(单元格列表)。当前结果是行(行)列表,每一行/行是整个字符串。
【问题讨论】:
-
您使用的是什么 CSV 解析器?网络搜索似乎只能找到
CSVParser类。没有CsvParser。由于您的问题是关于CsvParser生成的 Stream,当我们不知道它是什么时,您希望我们如何提供帮助? -
我正在使用 simpleflatmapper。
-
我写过我正在使用 simpleflatmapper,但因此有 3 票反对。
-
因为这里很少有人知道 simpleflatmapper,而且您没有链接到它或显示导入语句。 “simpleflatmapper”听起来像是与 Stream
flatMap方法相关的东西,这让我们陷入了一个循环。此外,您还没有向我们展示输入,所以我们怎么知道您希望看到什么。也许如果你提供了Minimal, Complete, and Verifiable example,你就不会被否决。
标签: java arrays csv java-stream