2016-07-11 5 views
1

Учитывая У меня есть следующие настройки итератора (с доменом является некоторый класс и входной быть какой-то файл):Univocity: при использовании CsvRoutines для итерации beans, почему я не могу использовать функцию iterator remove?

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-компоненту.

ответ

1

Я автор библиотеки и причина, по которой вы не можете ее удалить, потому что бобы не хранятся в списке в памяти, который вы можете манипулировать по своему усмотрению.

Эти бобы анализируются с входа, когда они считываются, и анализатор не имеет контроля над входом. Единственный разумный вариант борьбы с нежелательным компонентом - это игнорировать его: просто позвоните continue в свой цикл, чтобы перейти к следующему компоненту.

Надеюсь, что это поможет

 Смежные вопросы

  • Нет связанных вопросов^_^