2017-10-14 10 views
0

我有我从文件中解析CSVRecords的列表:使用Apache公地CSV:我想从列表<CSVRecord>删除一组记录,但它没有消除所有的人/

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个,所以很明显我做了错误的事情。我想弄清楚我做错了什么。 干杯。

回答

0

这是一个想法。不要删除记录。请制作您想要的记录副本并将其退回。所以如果记录不是p(pft)小于75那么复制到temp CSVRecord列表。然后返回温度。

每次您从optStratCsv中删除记录时,您的for (int i = 0; i < optStratCsv.size(); i++)中的尺寸更改。合理?

+0

哦,我明白了。非常感谢! –

+0

@MishaTsirlin,如果这个答案对你有帮助,请接受答案。谢谢, – jpllosa

+0

对不起,我现在做了 –

相关问题