一个页面 数据来自2个集合的拼装
集合为A,B
每页最多能只能显示N
A集合的数据优先显示,并且为每页显示最多为6条
B集合的数据显示比A弱点,并且B集合每页显示的数据为A显示之后剩下的,具体的为:
在某一页,A显示的数据+B显示的数据=15;
举例一:
A集合里面有10条数据
B集合里面有20条数据
那么,第一页,A显示1-6,B显示,1-9
第二页,A显示7-10,B显示,10-20
举例二:
A集合里面有5条数据
B集合里面有20条数据
那么,第一页,A显示1-5,B显示,1-10
第二页,A没有,B显示,11-20写一个通用的方法谢谢我要稍微好一点的
集合为A,B
每页最多能只能显示N
A集合的数据优先显示,并且为每页显示最多为6条
B集合的数据显示比A弱点,并且B集合每页显示的数据为A显示之后剩下的,具体的为:
在某一页,A显示的数据+B显示的数据=15;
举例一:
A集合里面有10条数据
B集合里面有20条数据
那么,第一页,A显示1-6,B显示,1-9
第二页,A显示7-10,B显示,10-20
举例二:
A集合里面有5条数据
B集合里面有20条数据
那么,第一页,A显示1-5,B显示,1-10
第二页,A没有,B显示,11-20写一个通用的方法谢谢我要稍微好一点的
解决方案 »
- struts1.3 错误 找了 一天了
- MyEclipse6.6配置struts2
- 为什么用ajax快速的调用servlet会出现内存溢出的异常?
- 请问这个JS倒计时如何修改中文字体大小?
- 跪求j2ee文件加密,在VB中进行解密的两个小程序
- jsp方面有没什么自动报表生成器
- 附加码问题 随机数取值
- JSP中包含JAVA程序就无法运行?
- 为何得不到text值?
- spring boot+spring cloud 如何实现多文件上传 断点上传
- 为我在<f:selectOneRadio>的JSF标记中设置layout="PAGE_DIRECTION"后radio按钮还是水平排列而不是垂直排列!
- [Microsoft][ODBC 驱动程序管理器] 无效的游标状态???
start,pagerecordstart是指针位置
pagerecord为取几条和mysql取数据类似start默认为1
int max_A = 6;
int A = 5;
int B = 50;
int page = 1;
while(A>0||B>0){
Integer AA = new Integer(A>0?(A>max_A?max_A:A):0);
Integer BB = new Integer(B>0?(B>max-AA.intValue()?max-AA.intValue():B):0);
A -= AA.intValue();
B -= BB.intValue();
System.out.println("page "+page+"\tA:"+AA.intValue()+"\tB:"+BB.intValue());
}
final int COUNT_A=5;//假设最多从集合A中取出5条List A,B;//应该作为参数传入
int lPage=1;//从第二页开始,第一页为0,如果是Start参数,则应该能被COUNT_ALL整除int lIndexA=lPage*COUNT_A,lIndexB;//lIndexA,lIndexB分别为从集合A,B中取数据的开始序号
int lSizeA=A.size();//多次用到,取出一次
if(lIndexA>=lSizeA){
lIndexA=-1;//-1表示不从集合A中取数据
lIndexB=lPage*COUNT_ALL-lSizeA;
}else{
lIndexB=lPage*COUNT_ALL-lIndexA;
}
//需要注意lIndexB不应该大于B.size()
int start=(curPage-1)*pageSize;
if(listA.size()+listB.size()<=start) return Collections.EMPTY_LIST;
List ret=new ArrayList();
int s1=(curPage-1)*aSize;
if(s1<listA.size()){
ret.addAll(listA.subList(s1,Math.min(s1+aSize,listA.size())));
}
int s2=start-Math.min(s1+ret.size(),listA.size())+ret.size();
if(s2<listB.size())
ret.addAll(listB.subList(s2,Math.min(listB.size(),s2+pageSize-ret.size())));
return ret;
}没有仔细测试