Me he rascado la cabeza por este problema desde hace un tiempo. Básicamente estoy tratando de generar una jerarquía de árbol a partir de un conjunto de datos CSV. Los datos CSV no están necesariamente ordenados. Esto es algo así:Generar estructura de árbol 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
Estoy tratando de hacer que la agrupación se realice lo más flexible posible. El más simple de la agrupación haría que lo haga por Registro1 y RECORD2 con el valor1 y valor2 almacenado bajo RECORD2 por lo que obtenemos el siguiente resultado:
Record1
Record2
Value1 Value2
que serían:
A
XX
22,33
777,888
YY
33,11
13,23
B
XX
12,0
YY
44,98
estoy almacenando la configuración de mi grupo en una lista en este momento, que no sé si esto está entorpeciendo mis pensamientos. Esta lista contiene una jerarquía de los grupos, por ejemplo:
Record1 (SchemaGroup)
.column = Record1
.columns = null
.childGroups =
Record2 (SchemaGroup)
.column = Record1
.columns = Value1 (CSVColumnInformation), Value2 (CSVColumnInformation)
.childGroups = null
El código para esto parece como sigue:
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
}
estoy stuggling producir un algoritmo para esto, tratando de pensar en la estructura subyacente usar. En la actualidad estoy analizar el CSV arriba a abajo, usando mi propia clase de contenedor:
CSVParser csv = new CSVParser(content);
String[] line;
while((line = csv.readLine()) != null) {
...
}
Estoy tratando de poner en marcha mi cerebro codificación.
¿Alguna idea?
¿Cuál es el panorama general? En el caso de la fila 'A, XX, 12,34' ¿cómo sabes que 12 y 34 pertenecen a A o XX? – palacsint