1
我解析的文件之一包含兩部分,我需要將其邏輯分成兩個不同的bean。我發現MultiBeanListProcessor是一個很好的方法。我使用test example 14作爲我的代碼的源代碼。Univocity - 是否可以使用MultiBeanListProcessor進行迭代?
考慮以下配置:
public class Sample {
public static void main(String[] args) throws IOException {
CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.getFormat().setDelimiter('|');
MultiBeanListProcessor processor = new MultiBeanListProcessor(Person.class, Address.class);
String[] headers = new String[7];
headers[0] = "id";
headers[1] = "firstName";
headers[2] = "lastName";
headers[3] = "city";
headers[4] = "streetName";
headers[5] = "houseNo";
headers[6] = "houseAdd";
String[] selectedFields = new String[5];
selectedFields[0] = "firstName";
selectedFields[1] = "lastName";
selectedFields[2] = "city";
selectedFields[3] = "streetName";
selectedFields[4] = "houseAdd";
parserSettings.setHeaders(headers);
parserSettings.selectFields(selectedFields);
parserSettings.setProcessor(processor);
parserSettings.setColumnReorderingEnabled(false);
CsvParser parser = new CsvParser(parserSettings);
parser.parse(new FileReader("src/main/resources/input.csv"));
List<Person> persons = processor.getBeans(Person.class);
List<Address> addresses = processor.getBeans(Address.class);
for (Person person : persons) {
System.out.println(person.getFirstName());
}
for (Address address : addresses) {
System.out.println(address.getCity());
}
}
}
這確實工作得非常不錯。
不幸的是,輸入文件是大到加載內存,我需要迭代,而不是一次解析。在先前詢問的question中給出瞭如何遍歷每個bean的答案。然而,我沒有設法將這個邏輯/代碼應用到這個用例中。
如何在使用MultiBeanListProcessor時迭代每個bean?
感謝您的例子中使用似乎並沒有編譯快速response.The的工藝方法。想自己寫一個流程方法的實現嗎? 最後但並非最不重要,在我的實際應用程序中,我有兩個bean,它們都實現了一個接口。我使用MultiBeanListProcessor來加載這些以接口表示的類。 'MultiBeanListProcessor processor = new MultiBeanListProcessor(classArray);' 'Class [] classArray'由Person和Adress bean組成,但是作爲一個接口。給定這個用例,我仍然可以使用beanProcessed方法嗎? –
想通了,我正在做一些菜鳥犯的錯誤。現在它的工作,我可以申請我的邏輯每行。 –