Учитывая следующие классы
public class Inventory {
private InventoryHeader header;
private List<InventoryLine> lines;
}
public class InventoryHeader {
private String date;
private boolean isCurrent;
}
public class InventoryLine {
private String itemName;
private int quantity;
}
и следующий CSV (используя ',' в качестве разделителя, но для наглядности я использовал здесь пробелы):
IH 2007-06-05 false
IL Watch 7
IL Flower Pot 9
IL Chicken Wing 29
IH 2010-07-30 true
IL Cable 200
IL Fish Tank 87
В этом случае «IH» означает, что эта строка является заголовком запасов, а «IL» означает, что это строка запасов. Строки строки запасов, следующие за заголовком запаса, относятся только к этому запасу. Конец объекта Inventory обозначается либо новой строкой заголовка инвентаризации, либо концом файла.
Я хотел бы разобрать это в список. Анализ одного объекта Inventory прост, просто добавьте ValueSwitch в столбец 0, создайте BeanListProcessor для InventoryHeader и InventoryLine и просто добавьте результаты в новый объект Inventory.
С помощью описанного выше метода мы получим список заголовков и строк, но как узнать, какие строки каким заголовкам соответствуют?