【发布时间】:2018-10-24 15:17:44
【问题描述】:
如何使用 java 流将标题和行的 csv 文件转换为 hashmap 数组? 例如。
orderNo, totals, charges, taxes, payments
ord121,1500.00,30.00,25.00,Paid
ord8925,1700.00,130.00,75.00,Paid
ord7115,300.00,130.00,75.00,Paid
Hashmap 的数组[0] 的名称应为 orderNo,值应为 ord121
Hashmap 的 Array[1] 的 Name 为 orderNo , value 为 ord8925... 以此类推
试过了,但坚持如何将 row(0) 内容作为 hashmap 名称
公共静态无效 readFileToMap() {
Pattern pattern = Pattern.compile(",");
String csvFile = inputDirPreFix + "input/file2.tsv";
try (BufferedReader in = new BufferedReader(new FileReader(csvFile));){
Map<String,String> namefreq = in
.lines()
.skip(1)
.map(lineData -> pattern.split(lineData))
.collect(HashMap::new, (map, lineData) ->
map.put(lineData[0], lineData[1]),
Map::putAll);
namefreq.forEach((k, v) -> System.out.println(k + " => " + v));
}
catch (Exception ex) {
Logger.getLogger("FileProcessing").log(Level.SEVERE, null, ex);
}
}
【问题讨论】:
-
到目前为止你尝试过什么?你如何读取 csv 并在内存中表示它?您要流式传输的输入结构是什么?
-
有什么理由必须是流?
-
有什么理由必须是流? – Joe C .. 不是真的,如果没有它更容易更快 - 我也很喜欢这个选项
标签: java csv java-8 stream java-stream