Je me suis creusé la tête sur ce problème depuis un moment maintenant. Essentiellement, j'essaie de générer une arborescence à partir d'un ensemble de données CSV. Les données CSV ne sont pas nécessairement ordonnées. Cela ressemble à quelque chose comme suit:Générer une structure arborescente à partir de 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
J'essaie de rendre le regroupement le plus flexible possible. Le plus simple pour de regroupement serait de le faire pour Record1 et Record2 avec le Valeur1 et Valeur2 stockés sous Record2 afin que nous obtenons le résultat suivant:
Record1
Record2
Value1 Value2
qui serait:
A
XX
22,33
777,888
YY
33,11
13,23
B
XX
12,0
YY
44,98
je stocke mes paramètres de groupe dans une liste à l'heure actuelle - que je ne sais pas si cela entrave mes pensées. Cette liste contient une hiérarchie des groupes, par exemple:
Record1 (SchemaGroup)
.column = Record1
.columns = null
.childGroups =
Record2 (SchemaGroup)
.column = Record1
.columns = Value1 (CSVColumnInformation), Value2 (CSVColumnInformation)
.childGroups = null
Le code pour cela ressemble comme suit:
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
}
Je stuggling produire un algorithme pour cela, en essayant de penser à la structure sous-jacente utiliser. À l'heure actuelle, je suis l'analyse syntaxique du haut en bas CSV, en utilisant ma propre classe d'emballage:
CSVParser csv = new CSVParser(content);
String[] line;
while((line = csv.readLine()) != null) {
...
}
Je suis juste en train de faire démarrer mon cerveau de codage.
Des pensées?
Quelle est la situation dans son ensemble? Dans le cas de la rangée 'A, XX, 12,34', comment savez-vous que 12 et 34 appartiennent à A ou XX? – palacsint