我已经在这个问题上摸到了一段时间了。我基本上试图从一组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
我试图让分组的执行方式尽可能灵活。对于分组的最简单的将这样做对记录1和RECORD2与RECORD2下存储的值1和值2,使我们得到如下输出:
Record1
Record2
Value1 Value2
具体做法是:
A
XX
22,33
777,888
YY
33,11
13,23
B
XX
12,0
YY
44,98
我存储我目前在List中的组设置 - 我不知道这是否妨碍了我的想法。此列表中包含组例如层次:
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