请各位帮小弟设计一个算法
请帮我想一个算法阿~
一个查询语句 查询两个字段 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> ");