不确定for循环层数转递归问题。

a472198674 2012-04-24 05:05:35
很乱的代码,直接发了。
如何写成递归,最后的返回一个List,List是多个条件组合成列表。这是最终目的。

List数据如下
1 mode=modelmode,scope=all,equip_type=光缆,equip_name=OPGW光缆,order=null,vlevel=off,merge=on
2 mode=modelmode,scope=all,equip_type=光缆,equip_name=OPGW光缆,order=null,vlevel=off,merge=off
3 mode=modelmode,scope=all,equip_type=光缆,equip_name=OPGW光缆,order=null,vlevel=on,merge=on
...


//排序 等级
//组合 名字/id- List list[0]- List list-("按单位,按地区")
//list1已经有值。listArrayType代表一个组合类型,统计表类型,listsArrayScope统计范围
//List<QueryCombinationForm>[][] lists = null;

int ValueNum = 10;
String listOneValue[] = new String[ValueNum] ;
int listOneId[] = new int[ValueNum];
List listMap =new ArrayList();
List danyuanList = new ArrayList();
List danyuanbList = new ArrayList();
List zongList = new ArrayList();
List zongbList = new ArrayList();

for(int i=0;i<listArrayType[0].size();i++){//统计表类型 1
listOneValue[0] = listArrayType[0].get(i).getCondition_value();
int id1 = listArrayType[0].get(i).getCondition_value_id();
listOneId[0] = id1;


List<QueryCombinationForm> lists2 = new ArrayList<QueryCombinationForm>();
int size2=1;
if(tjfwAllmap.containsKey(id1)){
lists2 = (List)tjfwAllmap.get(id1);
//lists[0] = tjfwAllmap.get(listOneValue[0]);
size2 = lists2.size();
}else{
QueryCombinationForm from = new QueryCombinationForm();
from.setCondition_value(" ");
from.setCondition_value_id(0);

lists2.add(from);
}

for(int j=0;j<size2;j++){//统计范围 2,size2是对应统计表的范围list的长度,第2个for循环

String name2 = lists2.get(j).getCondition_value();
int id2 = lists2.get(j).getCondition_value_id();
listOneValue[1] = name2;
listOneId[1] = id2;

int size3 = 1;
List<QueryCombinationForm> lists3 = new ArrayList<QueryCombinationForm>();
if(sblxAllmap.containsKey(id2)){
lists3 = (List)sblxAllmap.get(id2);
size3 = lists3.size();
}else{
QueryCombinationForm from = new QueryCombinationForm();
from.setCondition_value(" ");
from.setCondition_value_id(0);
//lists3.set(1,form );
lists3.add(from);
}
for(int k=0;k<size3;k++){//设备类型 3
String name3 = lists3.get(k).getCondition_value();
int id3 = lists3.get(k).getCondition_value_id();
listOneValue[2] = name3;
listOneId[2] = id3;

//设备名称
int size4 = 1;
List<QueryCombinationForm> lists4 = new ArrayList<QueryCombinationForm>();
if(sbmcAllmap.containsKey(id3)){
lists4 = (List)sbmcAllmap.get(id3);
size4 = lists4.size();
}else{
QueryCombinationForm from = new QueryCombinationForm();
from.setCondition_value(" ");
from.setCondition_value_id(0);
//lists2.set(1,form );
lists4.add(from);
int a = 99;
}

//电压等级
int size5 = 1;
List<QueryCombinationForm> lists5 = new ArrayList<QueryCombinationForm>();
if(dydjAllmap.containsKey(id3)){
lists5 = (List)dydjAllmap.get(id3);
size5 = lists5.size();
}else{
QueryCombinationForm from = new QueryCombinationForm();
from.setCondition_value(" ");
from.setCondition_value_id(0);
lists5.add(from);
}

for(int l=0;l<size4;l++){//设备名称 4
String name4 = lists4.get(l).getCondition_value();
int id4 = lists4.get(l).getCondition_value_id();
listOneValue[3] = name4;
listOneId[3] = id4;

for(int n=0;n<size5;n++){//电压等级
String name5 = lists5.get(n).getCondition_value();
int id5 = lists5.get(n).getCondition_value_id();
listOneValue[4] = name5;
listOneId[4] = id5;

//型号7,与统计表类型1关联
int size7 = 1;
List<QueryCombinationForm> lists7 = new ArrayList<QueryCombinationForm>();
if(xhAllmap.containsKey(id1)&&!listOneValue[2].equals("全部")){//当类型选全部时
lists7 = (List)xhAllmap.get(id1);
size7 = lists7.size();

}else{//当有且类型或者设备类型为全部时
QueryCombinationForm from = new QueryCombinationForm();
from.setCondition_value(" ");
from.setCondition_value_id(0);
//lists2.set(1,form );
lists7.add(from);
}
for(int m=0;m<size7;m++){
String name7 = lists7.get(m).getCondition_value();
int id7 = lists7.get(m).getCondition_value_id();
String limitIds = lists7.get(m).getDisable_limit_ids();
int flag =0;
try{
if(limitIds!=null||limitIds.equals(""))
{
String limIds1[] = limitIds.split(";");
int maxlimIds2length = 0;
for(int mid=0;mid<limIds1.length;mid++){
String limIds2[] = limIds1[mid].split(",");
if(limIds2.length>maxlimIds2length){maxlimIds2length = limIds2.length;}
}
String limIds3[][] = new String[limIds1.length][maxlimIds2length];
for(int lim1=0;lim1<limIds1.length;lim1++){
limIds3[lim1] = limIds1[lim1].split(",");
for(int lim2=0;lim2<limIds3[lim1].length;lim2++){
int num=0;
String id2s = limIds3[lim1][lim2];
for(int val=0;val<listOneValue.length;val++){
if(listOneValue[val]!=null){
try{boolean a = id2s.equals(listOneValue[val].toString());}
catch(Exception e){e.printStackTrace();}
if(id2s.equals(listOneValue[val].toString())){
num++;
if(num==limIds3[lim1].length){flag=1;}//已经匹配一组条件
}
}
}
//if
}
}//end for(lim1)
}//end if
}catch(Exception e){e.printStackTrace();}

listOneValue[6] = name7;
if(flag==1){listOneValue[6]="null";}
listOneId[6] = id7;

//排序6,与设备类型3关联
int size6 = 1;
List<QueryCombinationForm> lists6 = new ArrayList<QueryCombinationForm>();
if(pxAllmap.containsKey(id3) ){
try{
lists6 = (List)pxAllmap.get(id3);
size6 = lists6.size();
}catch(Exception e){e.printStackTrace();}
}else{
QueryCombinationForm from = new QueryCombinationForm();
from.setCondition_value(" ");
from.setCondition_value_id(0);
//lists2.set(1,form );
lists6.add(from);
}
for(int o=0;o<size6;o++){//排序
String name6 = lists6.get(o).getCondition_value();
int id6 = lists6.get(o).getCondition_value_id();
listOneId[5] = id6;
listOneValue[5] = name6;

danyuanList.add(listOneValue[0]);//统计表类型mode
danyuanList.add(listOneValue[1]);//统计范围scope
danyuanList.add(listOneValue[2]);//设备类型equip_type
danyuanList.add(listOneValue[3]);//设备名称equip_name
danyuanList.add(listOneValue[4]);//电压vlevel
danyuanList.add(listOneValue[5]);//排序 oder
danyuanList.add(listOneValue[6]);//型号合并merge

if(listOneValue[0].equals(" ")){listOneValue[0]="null";}
else if(listOneValue[0].equals("按单位统计")){listOneValue[0]="unitmode";}
else if(listOneValue[0].equals("按设备厂家统计")){listOneValue[0]="factorymode";}
else if(listOneValue[0].equals("按设备型号统计")){listOneValue[0]="modelmode";}
else if(listOneValue[0].equals("按设备类型统计")){listOneValue[0]="equiptypemode";}

if(listOneValue[1].equals(" ")){listOneValue[1]="null";}
else if(listOneValue[1].equals("所有设备")){listOneValue[1]="all";}
else if(listOneValue[1].equals("主网设备")){listOneValue[1]="主网";}
else if(listOneValue[1].equals("配网设备")){listOneValue[1]="配网";}

if(listOneValue[2].equals(" ")){listOneValue[2]="null";}
//数据库里面设备类型 "全部"为null,会重复?
if(listOneValue[2].equals("全部")){listOneValue[2]="null";}

if(listOneValue[3].equals(" ")){listOneValue[3]="null";}
if(listOneValue[3].equals("--请选择--")){listOneValue[3]="null";
}

if(listOneValue[4].equals(" ")){listOneValue[4]="null";}
else if(listOneValue[4].equals("不按电压等级")){listOneValue[4]="off";}
else if(listOneValue[4].equals("按电压等级显示")){listOneValue[4]="on";}

if(listOneValue[5].equals(" ")){listOneValue[5]="null";}
else if(listOneValue[5].equals("按单位")){listOneValue[5]="unit";}
else if(listOneValue[5].equals("按光缆总长度从高到低")){listOneValue[5]="cable";}
else if(listOneValue[5].equals("按设备总数从高到低")){listOneValue[5]="equip";}

if(listOneValue[6].equals(" ")){listOneValue[6]="null";}
else if(listOneValue[6].equals("不合并显示")){listOneValue[6]="off";}
else if(listOneValue[6].equals("合并显示")){listOneValue[6]="on";}
if(listOneValue[3].equals("null")){listOneValue[6]="null";}

danyuanbList.add("mode="+listOneValue[0]+",");
danyuanbList.add("scope="+listOneValue[1]+",");
danyuanbList.add("equip_type="+listOneValue[2]+",");
danyuanbList.add("equip_name="+listOneValue[3]+",");
danyuanbList.add("order="+listOneValue[5]+",");
danyuanbList.add("vlevel="+listOneValue[4]+",");
danyuanbList.add("merge="+listOneValue[6]);

zongList.add(danyuanList);
zongbList.add(danyuanbList);
danyuanList = new ArrayList();
danyuanbList = new ArrayList();
listOneValue[5]="";
}
listOneValue[6]="";
}
listOneValue[4]="";
}
listOneValue[3] = "";
}
listOneValue[2] = "";
}
listOneValue[1] = "";
}
listOneValue[0] = "";
}

tjfwAllmap.clear();
sblxAllmap.clear();
sbmcAllmap.clear();
dydjAllmap.clear();
xhAllmap.clear();
pxAllmap.clear();
...全文
642 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
a472198674 2014-07-09
  • 打赏
  • 举报
回复
huajian2008 的意见不错。只是问题后来被废除处理。
曼珠沙华糯米 2014-06-06
  • 打赏
  • 举报
回复
代码太多了,实在不想看。
huajian2008 2014-06-06
  • 打赏
  • 举报
回复
不确定多层循环嵌套的简洁写法 参考:http://jingyan.baidu.com/article/046a7b3efb6f5df9c27fa9ec.html
24K純帥 2012-04-26
  • 打赏
  • 举报
回复
for循环里。。好多if/else
BARERM 2012-04-26
  • 打赏
  • 举报
回复
同楼上。。不看
古市轩 2012-04-24
  • 打赏
  • 举报
回复
我佩服楼主的逻辑思维,难道不晕吗?这么多层循环,每层循环里面的代码又那么多,我估计没有几个人愿意去看这样的代码的,我建议楼主还是明确说出你到底想干嘛,这样别人还有可能帮你解决问题!
kolnick 2012-04-24
  • 打赏
  • 举报
回复
怎么长。。。
安特矮油 2012-04-24
  • 打赏
  • 举报
回复
我确定我没耐心去读这么多行代码
sdojqy1122 2012-04-24
  • 打赏
  • 举报
回复
我晕,先mark,什么情况。。。
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧