生成java树对象

http://javasl.blog.sohu.com/128841203.html

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

代码如下:

//节点对象

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就是我们要得到的树对象。

猜你喜欢

转载自panyongzheng.iteye.com/blog/2196843