您的位置:首页 > 编程语言 > Java开发

java构造树,多级菜单

2016-06-17 12:17 525 查看
public AboutUsMenuTree getMenuList()

    {

        // TODO Auto-generated method stub

        // 从数据库查询所有节点
        List<AboutUsMenu> list = aboutUsMenuDao.queryAll();

//
创建根节点0

        AboutUsMenuTree aboutUsMenuTree = new AboutUsMenuTree();

        aboutUsMenuTree.setMenuCode("0");

        List<AboutUsMenuTree> result = getChild(aboutUsMenuTree, list);
        ArrayList<AboutUsMenuTree> tmp = new ArrayList<AboutUsMenuTree>();

//当根节点放入树中后从list里面移除,一直到list的节点都放入树中为止

        while (list.size() > 0)

        {

            for (int i = 0; i < result.size(); i++ )

            {

                tmp.addAll(getChild(result.get(i), list));

                if (list.size() == 0)

                {

                    break;

                }

            }

            result = (List<AboutUsMenuTree>)tmp.clone();

            tmp.clear();

        }

        return aboutUsMenuTree;

    }

    // 传入各级根节点,获取他的子节点,再放入当前根节点中,返回下级根节点集

    private List<AboutUsMenuTree> getChild(AboutUsMenuTree root, List<AboutUsMenu> list)

    {

        List<AboutUsMenuTree> result = new ArrayList<AboutUsMenuTree>();

        for (int i = 0; i < list.size(); i++ )

        {

            AboutUsMenu aboutUsMenu_child = list.get(i);

            if (aboutUsMenu_child.getParentCode().equals(root.getMenuCode()))
            {

//拷贝值

                AboutUsMenuTree aboutUsMenuTree = new AboutUsMenuTree();

                aboutUsMenuTree.setMenuId(aboutUsMenu_child.getMenuId());

                aboutUsMenuTree.setMenuName(aboutUsMenu_child.getMenuName());

                aboutUsMenuTree.setMenuCode(aboutUsMenu_child.getMenuCode());

                aboutUsMenuTree.setOperator(aboutUsMenu_child.getOperator());

                aboutUsMenuTree.setUrl(aboutUsMenu_child.getUrl());

                aboutUsMenuTree.setDataCreate(aboutUsMenu_child.getDataCreate());

                aboutUsMenuTree.setDataUpdate(aboutUsMenu_child.getDataUpdate());

                aboutUsMenuTree.setSequence(aboutUsMenu_child.getSequence());

                result.add(aboutUsMenuTree);

                list.remove(i);

                i-- ;

            }

        }

        root.setAboutUsMenuTree(result);

        return result;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java tree