我已经为这个问题苦恼了一段时间。我基本上是尝试从一组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
我试图使分组的方式尽可能灵活。最简单的分组方式是将记录1和记录2与值1和值2一起存储在记录2下,以便我们获得以下输出:
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 ) {
...
}
我只是想启动我的编程思维。
有什么想法吗?
A,XX,12,34
,你怎么知道12和34属于A还是XX? - palacsint