Сгенерируйте древовидную структуру из csv

Я уже давно ломаю голову над этой проблемой. Я в основном пытаюсь создать древовидную иерархию из набора данных CSV. Данные CSV не обязательно заказываются. Это похоже на следующее:

Header: Record1,Record2,Value1,Value2
Row: A,XX,22,33
Row: A,XX,777,888
Row: A,YY,33,11
Row: B,XX,12,0
Row: A,YY,13,23
Row: B,YY,44,98

Я пытаюсь сделать способ группирования как можно более гибким.Самый простой способ группировки - это сделать это для Record1 и Record2 со значениями Value1 и Value2, хранящимися в Record2, чтобы мы получили следующий результат:

Record1
    Record2
        Value1 Value2

Что будет:

A
    XX
        22,33
        777,888
    YY
        33,11
        13,23
B
    XX
        12,0
    YY
        44,98 

В настоящее время я сохраняю настройки моей группы в списке. - я не знаю, мешает ли это моим мыслям. Этот список содержит иерархию групп, например:

Record1 (SchemaGroup)
    .column = Record1
    .columns = null
    .childGroups =
        Record2 (SchemaGroup)
            .column = Record1
            .columns = Value1 (CSVColumnInformation), Value2 (CSVColumnInformation)
            .childGroups = null

Код для этого выглядит следующим образом:

private class SchemaGroup {
    private SchemaGroupType type = SchemaGroupType.StaticText;  // default to text
    private String text;
    private CSVColumnInformation column = null;
    private List<SchemaGroup> childGroups = new ArrayList<SchemaGroup>();
    private List<CSVColumnInformation> columns = new ArrayList<CSVColumnInformation>();
}


private enum SchemaGroupType {
    /** Allow fixed text groups to be added */
    StaticText,
    /** Related to a column with common value */
    ColumnGroup
}

Я с трудом создаю алгоритм для этого, пытаясь придумать базовую структуру для использования. В настоящее время я разбираю CSV сверху вниз, используя свой собственный класс-оболочку:

CSVParser csv = new CSVParser(content);
String[] line;
while((line = csv.readLine()) != null ) {
    ...
}

Я просто пытаюсь запустить свой мозг кодирования.

Есть мысли?

6
задан ekad 27 May 2017 в 11:39
поделиться