Java下List使用subList实现分页

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT界的一只菜鸟

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值