Univocity:当使用 CsvRoutines 迭代 beans 时,为什么我不能使用迭代器删除功能?

Univocity: When using CsvRoutines to iterate beans, why can't I use iterator remove functionality?

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

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();                
} 

...删除一个bean?

换句话说,在 class com.univocity.parsers.common.routine.AbstractRoutines 中执行此操作的原因是什么?

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

我需要在迭代到下一个 bean 之前删除 "top" bean。

我是这个库的作者,你不能删除它的原因是 bean 没有保存在你可以随意操作的内存列表中。

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

希望对您有所帮助