Java 将具有扁平列结构的结果集转换为分层数据结构
我在Java 将具有扁平列结构的结果集转换为分层数据结构,java,database,data-structures,Java,Database,Data Structures,我在java.sql.ResultSet中有一个db查询的结果,需要转换为分层数据结构。看起来有点像这样: name|version|pname|code|count n1|1.1|p1|c1|3 n1|1.1|p1|c2|2 n1|1.1|p2|c1|1 n1|1.2|p1|c1|0 n2|1.0|p1|c1|5 我需要将其转换为分层数据结构: N1 + 1.1 + p1 + c1(3) + c2(2) + p2 + c1(1) + 1.2
java.sql.ResultSet
中有一个db查询的结果,需要转换为分层数据结构。看起来有点像这样:
name|version|pname|code|count
n1|1.1|p1|c1|3
n1|1.1|p1|c2|2
n1|1.1|p2|c1|1
n1|1.2|p1|c1|0
n2|1.0|p1|c1|5
我需要将其转换为分层数据结构:
N1
+ 1.1
+ p1
+ c1(3)
+ c2(2)
+ p2
+ c1(1)
+ 1.2
+ p1
+ c1(0)
N2
+ 1.0
+ p1
+ c1(5)
所以我的数据结构可以是这样的
Name {
String name
List<Version> versions
}
Version {
String version
List<PName> pnames
}
PName {
String pName
List<CodeCount> codeCounts
}
CodeCount {
String code
Integer count
}
名称{
字符串名
列出版本
}
版本{
字符串版本
列表pnames
}
PName{
字符串pName
列出编码计数
}
编码计数{
字符串代码
整数计数
}
有没有人对最好的方法有什么建议/代码片段?有几种方法,如何做到这一点取决于解决方案的健壮性 一种方法是只编写两个在数据库中具有属性的对象。然后,您可以获得结果集,并对其进行迭代,每次键字段(例如,“name”)更改时创建一个新对象,并将其添加到该对象的列表中。然后适当地设置属性。这就是“快速而肮脏”的解决方案 一种稍微更健壮的方法是使用Hibernate之类的东西来进行映射
如果您决定这样做,我还建议您重做您的表,以便它们准确地反映您的对象结构。如果您只是想要一个快速的解决方案,那么可能不需要它。但是,如果您正在为商业或企业软件寻找一个健壮的解决方案,这可能是一个好主意。我还需要将这些数据以XML的形式流式输出,这可能会产生大量数据,这样我就不想将这些数据存储在内存中,在编写XML时进行某种惰性迭代。