首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

非递归,内存储器中组装对象树

2012-09-12 
非递归,内存中组装对象树有这样一个树形结构:id,name,fatherId1Anull2b13c14d2对这样一张表我们需要将它组

非递归,内存中组装对象树
有这样一个树形结构:
  id,name,fatherId
   1   A   null
   2   b    1
   3   c    1
   4   d    2

对这样一张表我们需要将它组装成一个对象树。
1)我们可以查询数据库的时候进行递归,这样就会有很多发出很多条sql,效率很低;
2)另一种方式我们先用一条sql把数据查出来,然后在内存中递归,这种方式要比递归数据库节省很多时间;

上面两种情况都不太理想,这里我们说说另外一种思路:
1)首先一条sql从数据中查询出所有数据List<Node> nodeList;
2)循环nodeList将其放入一个Map<String,Node> map中;其中key是id
3)
    for(Node node: nodeList){
      Node fatherNode =  map.get(node.getFatherId().toString());
      if(null != fatherNode)               
        fatherNode.getNodeChildren().add(map.get(node.getId().toString()));
    }
这样一个循环下来之后,从map中拿到的任何对象都是一颗对象树,因为我们循环的是List,所以对象树也是有序的。

热点排行