我有一个从文件中解析的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的列表,所以显然我做错了。我想知道我做错了什么。 欢呼声。
答案 0 :(得分:0)
这是一个想法。不要删除记录。而是复制您想要的记录并将其返回。因此,如果记录 p(pft)小于75 ,则复制到临时CSVRecord列表。然后返回temp。
每次从optStratCsv
删除记录时,for (int i = 0; i < optStratCsv.size(); i++)
的尺寸都会发生变化。有意义吗?