我已经为这个问题摸不着头脑有一段时间了。我基本上试图从一组 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 ) {
...
}
我只是想启动我的编码大脑。
有什么想法吗?