使用apache commons csv:我试图从List <csvrecord>中删除一组记录但是它没有删除所有记录/

时间:2017-10-14 21:10:06

标签: java apache csv file-io

我有一个从文件中解析的CSVRecords列表:

https://drive.google.com/file/d/0ByASC8p2MeUKZlhTdkxETXV2U3M/view?usp=sharing

使用以下代码:

public static List<CSVRecord> getRecords(File file) throws Exception {
        Reader in = new FileReader(file);
        CSVParser parser = new CSVParser(in, CSVFormat.RFC4180);
        List<CSVRecord> records = parser.getRecords();
        parser.close();
        records.remove(0);
        return records;
    }

其中一列是p(pft),我试图删除p(pft)小于75的所有记录: (optStratCsv是csvRecords的列表)

           for (int i = 0; i < optStratCsv.size(); i++) {
                if (Integer.parseInt(optStratCsv.get(i).get(14)) < 75) {
                    optStratCsv.remove(i);
                }
            }

然而,虽然它应该给我一个大约6000条记录的列表,但是它给了我一个大约9000的列表,所以显然我做错了。我想知道我做错了什么。 欢呼声。

1 个答案:

答案 0 :(得分:0)

这是一个想法。不要删除记录。而是复制您想要的记录并将其返回。因此,如果记录 p(pft)小于75 ,则复制到临时CSVRecord列表。然后返回temp。

每次从optStratCsv删除记录时,for (int i = 0; i < optStratCsv.size(); i++)的尺寸都会发生变化。有意义吗?