javascript和JQuery焦点图和代码特效大全
当前最流行的开源CMS网站系统大全
当前位置:主页 > 编程开发 > JAVA技术 >

JAVA将数据封装成树形结构

来源:IT技术网编辑:一页书发布于:2013-06-19人围观Java封装数据树形结构

将数据封装成树形结构,无限级深,只需遍历两次 @param tree为List类型存放的初始VO对象。该vo类必须有id,parentId,children字段。children为List类型,具体实现代码为:

 

/**
     *  包装成树形结构 (全部属性)
     * @param tree
     * @return
     * @throws Exception
     */
    public static List factorTree(List tree) throws Exception{
        if(tree != null) {
            List t_list = new ArrayList();
            Map map =new HashMap();
            for(Object o:tree) {
                Class clazz = o.getClass();
                Field id = clazz.getDeclaredField("id");
                if(!id.isAccessible())  {
                    id.setAccessible(true);
                }
                Long lId = (Long)id.get(o);
                map.put(lId,o);
            }
 
            for(Object o:map.keySet()) {
                Long cId = (Long)o;
                Object obj = map.get(cId);
                Class clazz = obj.getClass();
                Field pId = clazz.getDeclaredField("parentId");
                if(!pId.isAccessible())  {
                    pId.setAccessible(true);
                }
                Long id = (Long)pId.get(obj);
                if(id==null) {
                    t_list.add(obj);
                } else {
                    Object object = map.get(id);
                    Class clazz1 = object.getClass();
                    Field children = clazz1.getDeclaredField("children");
                    if(!children.isAccessible())  {
                        children.setAccessible(true);
                    }
                    List list = (List)children.get(object);
                    if(CollectionUtils.isEmpty(list)){
                        list=new ArrayList();
                    }
                    list.add(obj);
                    children.set(object,list);
                }
            }
            return t_list;
        }
        return null;
    }

Java,封装,数据,相关的文章
有时间的话来看看IT界的突发事件