生成java树对象

数据库表中存放着节点信息,表结构为:id 为节点idname为节点名字,pid为其父节点,如果pid0则表示此节点为根节点。根据表中数据信息生成一个数对象,里面存放节点的树状信息。

代码如下:

//节点对象

public class Person {

 

       private String id;

   private String pid;

   private String name;

 

getter …

setter …    

}

 

// 树根对象,里面级联存储子节点信息,直到树叶

public class TreeObj {

 

       private String id;

   private String name;

   private List<TreeObj > cList =new ArrayList<TreeObj>();

      

getter …

setter …

}

 

public class Test {

 

    public static void main(String[] argStrings) {

 

        List<Person> pList = new ArrayList<Person>();

        pList.add(createPerson("1", "0", "a"));

        pList.add(createPerson("2", "0", "b"));

        pList.add(createPerson("3", "2", "c"));

        pList.add(createPerson("4", "2", "d"));

        pList.add(createPerson("5", "0", "e"));

        pList.add(createPerson("6", "5", "f"));

        pList.add(createPerson("7", "6", "g"));

 

        List<TreeObj> treeList = new ArrayList<TreeObj>();

 

        for (Person person : pList) {

            // find root note

            if ("0".equals(person.getPid())) {

                TreeObj treeObj = new TreeObj();

                treeObj.setId(person.getId());

                treeObj.setName(person.getName());

 

                treeList.add(putObjIterater(pList,treeObj));

            }

        }

        System.out.println(treeList);

    }

 

    private static Person createPerson(String id, String pid,String name) {

        Person p1 = new Person();

        p1.setId(id);

        p1.setPid(pid);

        p1.setName(name);

        return p1;

    }

 

    private static TreeObj putObjIterater(List<Person> pList, TreeObj treeObj) {

        // find child notes from pList and and the list in treeObj

        for (Person person : pList) {

            if (treeObj.getId().equals(person.getPid())) {

                // if treeObj has child note ,add it to the treeObj's list

                TreeObj newTreeObj = new TreeObj();

                newTreeObj.setId(person.getId());

                newTreeObj.setName(person.getName());

                treeObj.getCList().add(newTreeObj);

                putObjIterater(pList, newTreeObj);

            }

        }

        return treeObj;

    }

 

}

 

打印出的treeList就是我们要得到的树对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值