使用以下方法在核心Java中读取时跳过CSV文件的标题

时间:2017-11-20 12:24:55

标签: java

我想通过以下阅读模式跳过此csv文件中的标题         做法。         限制使用此模式,因为我使用Collections.sort,它使用List作为参数。

        场景:我持有大约20列,我需要对第3个字段进行排序,然后需要根据每个键(第3个字段)的第18列进行平均。在输出中,只需要4列。

    ------------ skip -------
    File file = new File("C:\\Users\\shekhar\\Desktop\\Lab\\DumpData.csv"); 
    //Declare file
    List<String>  lines = 
    Files.readAllLines(file.toPath(),StandardCharsets.UTF_8);//Reading file     
    Collections.sort(lines,new EmpIdComparator1()); // Sorting on 3rd field using comparator
    Map<String,List<String>> employeeById = new HashMap<>();  // Map used to decrease the column 
    ------------ skip ----------------------------------

输入数据在下面以逗号分隔值格式显示:

    Employee Name,Employee ID,Working Hours,Date,<more columns >
    ===========================================
    Sam,002,6.5,1 Nov
    Sam,002,8,2 Nov

3 个答案:

答案 0 :(得分:0)

为什么不在你的collections.sort之前通过循环原始创建一个新的List数组但忽略第一行使用变量if(lineno&gt; 2){..... add list for list array},and你在这个新阵列而不是原始阵列上进行排序。

答案 1 :(得分:0)

我会说使用一个基于你的员工ID的比较器,所以排序只发生在超过员工id 000的值上。

答案 2 :(得分:0)

我认为子列表可以满足您的需求。

Collections.sort(lines.sublist(1, lines.size()),new EmpIdComparator1());

它只对您传递给方法的列表的部分或视图进行排序。