1

鉴于我已经设置了以下迭代器(域是某个类,输入是某个文件):

BeanListProcessor<?> beanProcessor = new BeanListProcessor<Class<?>>((Class<Class<?>>) domain);
CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.setRowProcessor(beanProcessor);
parserSettings.setHeaderExtractionEnabled(true);
parserSettings.setDelimiterDetectionEnabled(true);
CsvRoutines routines = new CsvRoutines(parserSettings);
Iterator<?> it = routines.iterate(domain, input).iterator();

为什么我不能用...

while (it.hasNext()) {
    Object record = it.next();
    it.remove();                
} 

...移除一个豆子?

换句话说,在 com.univocity.parsers.common.routine.AbstractRoutines 类中实现这种实现的原因是什么?

@Override
public void remove() {
    throw new UnsupportedOperationException("Can't remove beans");
}

在迭代到下一个 bean 之前,我需要删除“顶部”bean。

4

1 回答 1

2

我是该库的作者,您无法删除它的原因是 bean 没有保存在您可以随意操作的内存列表中。

这些 bean 在读取时从输入中解析,解析器无法控制输入。处理不需要的 bean 的唯一明智的选择是忽略它:只需调用continue您的循环以移动到下一个 bean。

希望这可以帮助

于 2016-07-12T00:37:06.543 回答