Java中list使用subList实现分页
在当下jdk版本中,jdk>1.7使用java新特性中,使用stream来实现分页更方便。
请参考:Java新特性
不建议再使用subList来实现分页
java.util.List中有一个subList方法,用来返回一个List的一部分的视图。
List subList(int fromIndex, int toIndex);
它返回原来list的从(fromIndex, toIndex)之间这一部分的视图,之所以说是视图,是因为实际上,返回的list是靠原来的List支持的。返回一个以fromIndex为起始索引(包含),以toIndex为终止索引(不包含)的子列表(List)。
但值得注意的是,返回的这个子列表的幕后其实还是原列表;也就是说,修改这个子列表,将导致原列表也发生改变;反之亦然。
比如集合中的内容为1,2,3,4,5,list.sublist(2,4)就返回一个子集合,它的内容包括从下标为2到下标为4,而且这是左闭右开的,就是说是从大于等于2到小于4,那子集内容就是3,4(集合的下标都是从0开始)
示例:
List<String> list = new ArrayList<String>();
for (int i = 1; i < 101; i++) {
list.add("str"+i);
}
int subSize = 10;
int subCount = list.size();
int subPageTotal = (subCount / subSize) + ((subCount % subSize > 0) ? 1 : 0);
for (int i = 0, len = subPageTotal - 1; i <= len; i++) {
// 分页计算
int fromIndex = i * subSize;
int toIndex = ((i == len) ? subCount : ((i + 1) * subSize));
List<String> pageList = list.subList(fromIndex, toIndex);
for (int j = 0; j< pageList.size(); j++) {
System.out.print(pageList.get(j)+"\t");
}
System.out.println("\r\n");
}
输出结果如下:
str1 str2 str3 str4 str5 str6 str7 str8 str9 str10
str11 str12 str13 str14 str15 str16 str17 str18 str19 str20
str21 str22 str23 str24 str25 str26 str27 str28 str29 str30
str31 str32 str33 str34 str35 str36 str37 str38 str39 str40
str41 str42 str43 str44 str45 str46 str47 str48 str49 str50
str51 str52 str53 str54 str55 str56 str57 str58 str59 str60
str61 str62 str63 str64 str65 str66 str67 str68 str69 str70
str71 str72 str73 str74 str75 str76 str77 str78 str79 str80
str81 str82 str83 str84 str85 str86 str87 str88 str89 str90
str91 str92 str93 str94 str95 str96 str97 str98 str99 str100