日期:2014-05-20  浏览次数:20647 次

请各位帮小弟设计一个算法
请帮我想一个算法阿~  
一个查询语句   查询两个字段   a   和b  
将a字段竖着显示在屏幕上   当b字段发生变化时   把a字段的内容显示在同一个 <table> 的另外一个 <td> 中  
我是将a   和   b存储在两个   ArrayList   中~  
当ArrayListB.get(i)!=ArrayListB.get(i-1)时,放置一个 <td> ... </td>  

我一开始是这样子的  
for(i=1;i <rsLen;i++)//i=0会产生越界,rsLen是记录集的长度  
{  
out.print( " <td> <tr> <br> ");  
out.print(ArrayListA.get(i));  
out.print( " </td> </tr> <br> ");  

if(!ArrayListB.get(i).equals(ArrayListB.get(i-1)))  
{  
%>  
<td> <%=ArrayListA.get(i)%> </td>  
<%  
}  
else  
{  
......  
}  
}但是这样只能显示两个b(i)不同的TD

然后我用while来输出TD,但是产生了死循环,服务器差点崩溃~

在多处寻求算法未果

希望借CSDN得到各位前辈的指点,给一个算法

小弟初学编程没多久,望各位不要笑话!   在此多谢!


------解决方案--------------------
我的建议是先把检索出来的数据组装好再输出。
思路是这样的:1.将每一个level对应的name全装如一个list里(或map);
2.再将这些list装如一个List里,再输出.
List totList=new ArrayList();
String key= " ";
List temp=new ArrayList();
for(int i=0;i <ArrayListB.size();i++){
if(!key.equals(ArrayListB.get(i))){
temp=new ArrayList();
totList.add(temp);
key=ArrayListB.get(i));
}
temp.add(ArrayListA.get(i)+ "( "+ArrayListB.get(i)+ ") ");
}
封装好了,输出:
out.print( " <tr> ");
for(int j=0;j <totList.size();j++){
out.print( " <td> ");
List list=(List) totList.get(j);
for(int k=0;k <list.size();k++){
out.print(list.get(k));
out.print( " <br/> ");
}
out.print( " </td> ");
}
out.print( " </tr> ");