java - 将具有平面列结构的结果集转换为分层数据结构

标签 java database data-structures

我在 java.sql.ResultSet 中有一个数据库查询结果,需要将其转换为分层数据结构。看起来有点像这样:

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
}

有人对执行此操作的最佳方法有建议/代码片段吗?

最佳答案

有几种方法,具体如何操作取决于您的解决方案需要有多强大。

一种方法是只编写几个具有数据库中属性的对象。然后,您可以获取结果集,并对其进行迭代,每次关键字段(例如“名称”)更改时创建一个新对象,并将其添加到该对象的列表中。然后您可以适本地设置属性。这是“快速而肮脏”的解决方案。

稍微更可靠的方法是使用 Hibernate 之类的东西来进行映射。

如果您确实决定这样做,我还建议重做您的表格,以便它们准确地反射(reflect)您的对象结构。如果您只是想要快速解决方案,则可能不需要它。但如果您正在为商业或企业软件寻找强大的解决方案,这可能是个好主意。

关于java - 将具有平面列结构的结果集转换为分层数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914006/

相关文章:

java - 如何修复此 gradle 依赖项解析错误?

java - 为什么 try/catch block BufferedWriter 需要括号

java - vaadin 中的数据库表更新

sql - 将列中的随机字符串添加到数据库中的每一行

java - 第二个 Activity 中的输出不起作用

java - Json 到 java 对象错误

mysql - 无法使用带有 sinatra 的数据映射器保存表单数据

algorithm - 与条目数相关的哈希表应该初始化多大?

c++ - 在磁盘上实现无锁数据结构

python - Python 中的合并排序 - RuntimeError : maximum recursion depth exceeded