使用do-while分页调用接口

使用场景

远程请求接口,接口每次请求数据条数有限制,只能用分页多次调取再合并,需要使用总条数total和每次最大分页size去计算调用次数

之前都是老实的使用取模取余来计算,,do-while会看起来优雅简单很多。

代码示例 ①

List<Data> list = new ArrayList<>();
int pageNo = 0;
int pageSize = 100;
int total = 0;
do {
	// 页码加1
	pageNo++;

	/* 调用api逻辑代码 */

	list.addAll(datas);

} while (pageNo * pageSize < total);

代码示例 ②

public static void main(String[] args) {
        List<Integer> listData = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            listData.add(i);
        }

        List<Integer> list = new ArrayList<>();
        int pageNo = 0;
        int pageSize = 10;
        int total = listData.size();
        do {
            // 页码加1
            pageNo++;
            // 切割数据
            int start = (pageNo - 1) * pageSize;
            int end = Math.min((start + pageSize), total);
            List<Integer> empList = listData.subList(start, end);
            
            /*=======业=务=====*/
            
            list.addAll(empList);
        } while (pageNo * pageSize < total);

        System.out.println("list = " + list);

}

附:分页计算公式

// 起始0
int start = (currentPage - 1) * pageSize
posted @ 2023-07-04 10:42  生生灯火半杯月  阅读(228)  评论(0)    收藏  举报