list集合的分页及问题

 PageHelper插件分页

    PageHelper.startPage(pageNum, pageSize);
    PageInfo<T> pageInfo = new PageInfo<>(list);
    PageHelper.clearPage();

PageHelper插件分页很方便,但也有缺点;
当list集合进行并集、交集等操作后,再用PageHelper便会出问题,
此时可将list集合先排序,再截取达到分页的效果,如下:

list.sort(Comparator.comparing(T::getId).reversed());  //反序  
List<Integer> integers = list.subList(start, end);//截取1
List<Integer> collect = list.stream().skip(start).limit(pageSize).collect(Collectors.toList());//截取2  (两种截取方法均可)

  public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(3);
        list.add(1);
        list.add(5);
        list.add(2);
        list.add(4);
        Integer currentPage = 1;
        Integer pageSize = 3;
        Long skipNumber = (currentPage - 1) * pageSize.longValue();
        list.sort(Comparator.comparing(Integer::intValue).reversed());  //反序
//        Integer start = min(skipNumber, list.size());
//        Integer end = min(skipNumber + pageSize, list.size());
//        List<Integer> integers = list.subList(start, end);
//        System.out.println(integers.toString());       
 List<Integer> collect = list.stream().skip(skipNumber).limit(pageSize).collect(Collectors.toList());
        System.out.println("原顺序:" + list.toString());
        System.out.println("分页后:" + collect.toString());
        //打乱list里面的顺序
        Collections.shuffle(list);
        System.out.println("乱序后:" + list.toString());
    }

测试结果

list的其他应用:https://pingzhengguo.blog.csdn.net/article/details/86569380 (类型转换,排序,分组)
                        https://pingzhengguo.blog.csdn.net/article/details/86540899(list的最大,最小,求和,平均)
                        https://pingzhengguo.blog.csdn.net/article/details/86571528 (去重和提取重复元素) 
                        https://pingzhengguo.blog.csdn.net/article/details/90484690(list和树状间的转换)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值