一、通过Stream的 skip() 和 limit() 方法组合分页

import java.lang.Math;
import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        
        List<String> names=new ArrayList();
        names.add("a");
        names.add("b");
        names.add("c");
        names.add("d");
        names.add("e");
        names.add("f");
        names.add("g");
        names.add("h");
        names.add("i");
        names.add("j");
        names.add("k");
        
        int total=names.size();
        int pageSize=3;
        /*两种页数计算方式都可以:1.取余计算 2.向上取整*/
        int pages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
       // int pages= (int)Math.ceil(Double.valueOf(total)/pageSize);
        for(int pageNo = 1;pageNo <= pages;pageNo++){
            List<String> subName=names.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList());
            System.out.println(subName);
        }
    }
}

二、通过数组的 subList() 方法

import java.lang.Math;
import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        
        List<String> names=new ArrayList();
        names.add("a");
        names.add("b");
        names.add("c");
        names.add("d");
        names.add("e");
        names.add("f");
        names.add("g");
        names.add("h");
        names.add("i");
        names.add("j");
        names.add("k");
        
        int total=names.size();
        int pageSize=3;
        /*两种页数计算方式都可以:1.取余计算 2.向上取整*/
        int pages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
       // int pages= (int)Math.ceil(Double.valueOf(total)/pageSize);
        for(int pageNo=1;pageNo <= pages;pageNo++){
            List<String> subName;
            if (pageNo==pages){
                subName=names.subList((pageNo-1)*pageSize,total);
            } else {
                subName=names.subList((pageNo-1)*pageSize,pageNo*pageSize);
            }
            System.out.println(subName);
        }
    }
}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐