首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用java流将头和行的csv文件转换为hashmap数组。

使用java流将头和行的csv文件转换为hashmap数组。
EN

Stack Overflow用户
提问于 2018-10-24 23:17:45
回答 1查看 1.5K关注 0票数 0

如何使用java streams将包含头和行的csv文件转换为hashmap数组?例如:

代码语言:javascript
复制
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

哈希映射数组的名称应为orderNo,值应为ord121

Hashmap的名称应为orderNo,值应为ord8925...诸若此类

我尝试过,但在如何将行(0)内容作为hashmap名称的问题上遇到了困难

公共静态空readFileToMap() {

代码语言:javascript
复制
    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);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-26 00:02:09

暂时不使用流进行管理...

代码语言:javascript
复制
public static void readFileToMap() {

    String csvFile = inputDirPreFix + "input/file2.tsv";
    String []  strArrHeaderFields =new String [20]  ;
    HashMap objDataHashMap ;
    HashMap <Integer,Object> objAggregateData = new HashMap(); ;

    String [] strArrValues = new String[20];

    try {
        List<String> fileLinesList = Files.readAllLines(Paths.get(csvFile));

        strArrHeaderFields =fileLinesList.get(0).split(",");
        //System.out.println( Arrays.toString(objHeaderFields)  );

        //skip header line and collect data lines in hashmap with Name as Header line values..
        // for every data line,
        for( int i=1; i< fileLinesList.size(); i ++) {
            objDataHashMap = new HashMap();
            //get values from each data line
            strArrValues =fileLinesList.get(i).split(",");

            for( int j=0; j< strArrHeaderFields.length; j++) {
                 objDataHashMap.put(strArrHeaderFields[j], strArrValues[j]);
            }

            //System.out.println( "objDataHashMap Count of Records ...." + objDataHashMap.size() );
            objAggregateData.put(i,objDataHashMap);

        }
        System.out.println( "objAggregateData Count of Records ...." + objAggregateData.size() );

        objAggregateData.forEach((k,v) -> {
            System.out.println(k + " : " + v );
        });

    } catch (Exception ex) {
        Logger.getLogger("FileProcessing").log(Level.SEVERE, null, ex);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52972587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档