java分段加载数据,循环和递归两种方式

package org.jimmy.autosearch2019.test;

import java.util.ArrayList;

public class Test20190328 {

    private static final ArrayList<String> allList = new ArrayList<String>();
    
    static {
        for(int i = 0; i < 1000; i++) {
            allList.add("test000000" + i);
        }
    }
    
    /**
     * @author ラピスラズリ(Dawn)
     * @date 2019年3月28日 下午2:16:57
     * @detail 
     */
    public static void main(String[] args) {
        System.out.println("循环方式每次获取10个对象:");
        ArrayList<String> list = getAllList(0, 10);
        for(int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("循环方式每次获取100个对象:");
        list = getAllList(0, 100);
        for(int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("循环方式每次获取1000个对象:");
        list = getAllList(0, 100);
        for(int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("递归方式每次获取10个对象:");
        list = new ArrayList<String>();
        list = getAllList(0, 10, list);
        for(int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("递归方式每次获取100个对象:");
        list = new ArrayList<String>();
        list = getAllList(0, 100, list);
        for(int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("递归方式每次获取1000个对象:");
        list = new ArrayList<String>();
        list = getAllList(0, 1000, list);
        for(int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
    
    /**
     * @author ラピスラズリ(Dawn)
     * @date 2019年3月28日 上午11:07:50
     * @detail 分段获取集合数据,pageIndex初始值为0,每次pageSize条,循环方式
     */
    public static ArrayList<String> getAllList(int pageIndex, int pageSize) {
        ArrayList<String> list = new ArrayList<String>(); 
        ArrayList<String> currentList = new ArrayList<String>();
        while((currentList = getStrList(pageIndex, pageSize)).size() != 0){
            list.addAll(currentList);
            pageIndex++;
        }
        return list;
    }
    
    /**
     * @author ラピスラズリ(Dawn)
     * @date 2019年3月28日 下午2:24:52
     * @detail 递归方式
     */
    public static ArrayList<String> getAllList(int pageIndex, int pageSize, ArrayList<String> list) {
        ArrayList<String> currentList = getStrList(pageIndex, pageSize);
        if(currentList != null && currentList.size() > 0) {
            list.addAll(currentList);
            pageIndex++;
            return getAllList(pageIndex, pageSize, list);
        }else {
            return list; 
        }
    }
    
    /**
     * @author ラピスラズリ(Dawn)
     * @date 2019年3月28日 下午2:13:09
     * @detail pageIndex初始值为0
     */
    public static ArrayList<String> getStrList(int pageIndex, int pageSize) {
        ArrayList<String> resultList = new ArrayList<String>();
        int beginIndex = pageIndex * pageSize;
        int endIndex = (pageIndex + 1) * pageSize - 1;
        if(endIndex > allList.size() - 1) {
            endIndex = allList.size() - 1;
        }
        for(int i = beginIndex; i <= endIndex; i++) {
            String currentStr = allList.get(i);
            resultList.add(currentStr);
        }
        return resultList;
    }
    
}

好了,效果图就不给了.

转载于:https://www.cnblogs.com/JimmySeraph/p/10614964.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值