日期:2014-05-17 浏览次数:20880 次
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) {