简体   繁体   中英

convert a result set with flat column structure into hierarchical data structure

I have a result of a db query in java.sql.ResultSet that needs to be converted to hierarchical data structure. It looks a bit like so:

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

I need that converted into a hierarchical data structure:

N1
 + 1.1
   + p1
     + c1(3)
     + c2(2)
   + p2
     + c1(1)
 + 1.2
    + p1
      + c1(0)
N2
 + 1.0
   + p1
     + c1(5)

So my data structure can look something like this

Name {
  String name
  List<Version> versions
}

Version {
  String version
  List<PName> pnames
}

PName {
  String pName
  List<CodeCount> codeCounts
}

CodeCount {
  String code
  Integer count
}

Anyone have suggestions/code snippets on the best way to do this?

There are a few ways, and how you do it depends on how robust your solution needs to be.

One would be to just write a couple of objects that had the attributes in the database. Then you could get the result set, and iterate over it, creating a new object each time the key field (for example, "name") changed, and adding it to a list of that object. Then you'd set the attributes appropriately. That is the "quick and dirty" solution.

A slightly more robust way would be to use something like Hibernate to do the mapping.

If you do decide to do that, I would also suggest redoing your tables so that they accurately reflect your object structure. It may not be needed if you just want a fast solution. But if you are seeking a robust solution for commercial or enterprise software, it's probably a good idea.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM