日期:2014-05-17 浏览次数:20737 次
package com; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test2 { public static void main(String[] args) { //使用递归方式提取出封装的数据 } public List<Attr> getResult(){ List<Attr> list= new ArrayList<Attr>(); //语句 String sql="select id,name,parent,order from table"; //临时封装对象 Map<Integer,List<Attr>> map = new HashMap<Integer,List<Attr>>(); // while(rs.next()){ Attr attr= new Attr(); // attr.setId(rs.getInt(1)); // .......省略 /* map封装形式: key value parent(同父级编号) list(一个父级所有的菜单) */ List<Attr> temp=map.get(new Integer(attr.getParent())); if(temp!=null){ temp.add(attr); }else{ temp= new ArrayList<Attr>(); temp.add(attr); map.put(new Integer(attr.getParent()), temp); } // } //临时 start(没用的代码段) List<Attr> parent=map.get(new Integer(0));//第一级 第一级确认父级为0 if(parent!=null){ for(int i=0;i<parent.size();i++){ Attr at1=parent.get(i); list.add(at1); List<Attr> subParent = map.get(new Integer(at1.getId()));//第二级 if(subParent!=null){ for(int j=0;j<subParent.size();j++){ Attr at2=subParent.get(i); at1.setSubAttr(new ArrayList<Attr>()); at1.getSubAttr().add(at2); List<Attr> theParent = map.get(new Integer(at2.getId()));//第三级 if(theParent!=null){ //.............. } } } } //排序 Comparator comp=new ListSort(); Collections.sort(parent,comp); } //临时 end return list; } /** * 递归方法 * @param list * @param map * @return */ private List<Attr> dealData(List<Attr> list,Map<Integer,List<Attr>> map){ if(list==null){ return list; }else{ for(int i=0;i<list.size();i++){ Attr attr = list.get(i); List<Attr> temp=map.get(new Integer(attr.getId())); attr.setSubAttr(temp); if(temp!=null){ for(int j=0;j<temp.size();j++){ Attr attr2 = list.get(j); //attr2.setSubAttr(this.dealData(attr2.getSubAttr(), map)); //排序 //Comparator comp=new ListSort(); //Collections.sort(parent,comp); } }else{ continue; } } //return dealData(list,map); } } } class Attr { //主键编号 private int id; //菜单名称 private String name; //父级编号 private int parent; //同级下排序 private int order; //子菜单对象 private List<Attr> subAttr;; public int getId() { return id; } public List<Attr> getSubAttr() { return subAttr; } public void setSubAttr(List<Attr> subAttr) { this.subAttr = subAttr; } public void setId(int id) {